Fórum Validacao #407149
27/08/2011
0
Ola
Estou fazendo a validacao no Onvalidate para campos duplicados, usando a procedure abaixo:
procedure TDataModule1.Servalida(tabela:Tclientdataset;texto: string;campo1:Tfield;campo2:string;campo3:Tfield);
begin
datamodule1.CDvalida.active:=false;
datamodule1.CDvalida.Params.Clear;
datamodule1.CDvalida.CommandText:=texto;
datamodule1.CDvalida.active:=true;
if tabela.state in [dsinsert] then begin
if datamodule1.CDvalida.locate(campo2,campo1.value,[locaseInsensitive]) then
Raise Einvalidnome.create('Campo Já cadastrado');
end;
if tabela.state in [dsedit] then begin
if datamodule1.CDvalida.locate(campo2,campo1.value,[locaseInsensitive]) then begin
if datamodule1.CDvalida['controle']<>campo3.value then
Raise Einvalidnome.create('Campo Já cadastrado');
end;
end;
datamodule1.CDvalida.active:=false;
datamodule1.CDvalida.Params.Clear;
datamodule1.CDvalida.CommandText:=(' ');
end;
A chamada da procedures no onvalidate do campo é : ( tabela proprietario) ==>
servalida(CDproprietario,'select controle,nome from proprietario',CdproprietarioNome,'nome',CDproprietariocontrole)
no entanto só esta funcionando para 4 caracteres - mais do que isso passa como falso
o que pode estar acontecendo?
cilmar
Estou fazendo a validacao no Onvalidate para campos duplicados, usando a procedure abaixo:
procedure TDataModule1.Servalida(tabela:Tclientdataset;texto: string;campo1:Tfield;campo2:string;campo3:Tfield);
begin
datamodule1.CDvalida.active:=false;
datamodule1.CDvalida.Params.Clear;
datamodule1.CDvalida.CommandText:=texto;
datamodule1.CDvalida.active:=true;
if tabela.state in [dsinsert] then begin
if datamodule1.CDvalida.locate(campo2,campo1.value,[locaseInsensitive]) then
Raise Einvalidnome.create('Campo Já cadastrado');
end;
if tabela.state in [dsedit] then begin
if datamodule1.CDvalida.locate(campo2,campo1.value,[locaseInsensitive]) then begin
if datamodule1.CDvalida['controle']<>campo3.value then
Raise Einvalidnome.create('Campo Já cadastrado');
end;
end;
datamodule1.CDvalida.active:=false;
datamodule1.CDvalida.Params.Clear;
datamodule1.CDvalida.CommandText:=(' ');
end;
A chamada da procedures no onvalidate do campo é : ( tabela proprietario) ==>
servalida(CDproprietario,'select controle,nome from proprietario',CdproprietarioNome,'nome',CDproprietariocontrole)
no entanto só esta funcionando para 4 caracteres - mais do que isso passa como falso
o que pode estar acontecendo?
cilmar
Cilmar Rosa
Curtir tópico
+ 0
Responder
Clique aqui para fazer login e interagir na Comunidade :)