Página 1 de 1
Problemão na validação para evitar duplicidade
Enviado: Maio 13th, 2014, 5:43 pm
por dsguedes
Gente, ocorreu o seguinte:
Usei o PTabela para verifica se o registro já existe, assim evitando a duplicidade.
Detalhe: usei essa função PTabela no evento onExit de cada campo a ser verificado. Formulário padrão do Xmaker: MDI, modelo1
Até ai blz.
Mas quando testei a aplicação funcionando tudo direitinho até quando cliquei em "modificar", ao salvar estava validando tudo novamente informando já existir "tudo", claro. Ainda não compreendi a lógica para que valide sem problemas.
Agradeço a atenção e a ajuda!!
Re: Problemão na validação para evitar duplicidade
Enviado: Maio 19th, 2014, 4:03 pm
por mrangel
"usei essa função PTabela no evento onExit de cada campo a ser verificado"
Eu faço essa verificação para verificar se o CPF digitado já se encontra no cadastro, mas é necessário saber se a tabela está em edição ou em inclusão.
Explica melhor, qual campo precisa saber se já foi cadastrado ??
Re: Problemão na validação para evitar duplicidade
Enviado: Maio 19th, 2014, 4:04 pm
por mrangel
Olá, eu uso validação no onexit para verificar se o cpf digitado já estava cadastrado.
Qual campo precisa verificar se já estava cadastrado ??
Re: Problemão na validação para evitar duplicidade
Enviado: Maio 20th, 2014, 5:45 pm
por dsguedes
Olá mrangel, tenho que validar um cadastro que contem cpf, rg, pis, cnh, titulo de eleitor, ... e preciso verificar se os mesmo já foram cadastrados.
Como estou usando apenas o assistente do xmaker com seus formulários padrão, então no assistente de tabela na opção validação temos as funções de VCPF, VPIS, ... que verifica apenas se é válido e não tem função para verificar duplicidade.
Assim é necessário inserir a função PTabela manualmente no evento onExit, que irá pesquisar se o dado informado já foi inserido ou não.
Agora estou começando a entender a lógica.
Da forma que fiz apenas inserindo no onExit sem verificar o estado da tabela se está em edição ou inclusão, sempre que estiver no formulário será verificado onde ocorre o problema.
Para solucionar acredito que devo apenas verificar o estado da tabela e verificar a duplicidade se estiver apenas no modo de inclusão.
Irei pesquisar o código para verificar edição de tabela.
Em breve comento se ocorreu tudo bem, obrigado pela ajuda!
Re: Problemão na validação para evitar duplicidade
Enviado: Maio 21st, 2014, 8:10 am
por mrangel
Segue o código que eu uso no evento OnExit do campo CPF em uma inclusão de Cliente:
if AbandonandoEdicao then
Exit;
if not TabGlobal.DCLIENTE.CLI_ST_CPF.Valido(MsgErro) then
ErroValidacaoCampo(MsgErro, TabGlobal.DCLIENTE.CLI_ST_CPF)
{Valida o campo digitado}
else begin
if (TabelaPrincipal.Inclusao) and (TabGlobal.DCLIENTE.CLI_ST_CPF.Conteudo <> '') then // Verifica se tabela está em inclusão e CPF não é vazio
if Ptabela(TabGlobal.DCLIENTE,['CLI_ST_CPF'],[TabGlobal.DCLIENTE.CLI_ST_CPF.Conteudo]) then
ErroValidacaoCampo('CPF já cadastrado.', TabGlobal.DCLIENTE.CLI_ST_CPF);
end;
if not SalvarRegistro then
ExecutaPreValidacoes(TabelaPrincipal, Self, ListaCamposEd);
Re: Problemão na validação para evitar duplicidade
Enviado: Agosto 10th, 2014, 4:08 pm
por adassoft
Eu faço o seguinte, verifico se o formulário está no modo de modificação ou no modo de inclusão, mas nesse caso o usuário pode alterar o dado do campo e informar um que já existe. Para evitar isso, fiz o seguinte, criei uma variável que armazena o valor do campo em questão no momento em que é clicado no botão modificar, se o formulário estiver no modo de modificação verifico se o valor da variável é diferente do valor do campo, caso seja afirmativo ele verifica se há duplicidade.