Como cancelar uma gravação através o evendo OnBeforePost.
Olá pessoal...
O Problema é o seguinte...
Eu gostaria de verificar se esse registro já existe, se a reposta for sim ´Registro existente:
1 - cancelar a gravação.
2 - Enviar mensagem informando que já existe.
3 - O campo de inseção do registro ganha-se foco.
Utilizei esses códigos abaixo mas não obtive resultado desejado...
Agradeço qualquer informação.
Ass: Max..
procedure TProjetoModule.IBTSociosBeforePost(DataSet: TDataSet);
var
Nome:string;
begin
Nome:= FormSocioIncluir.eDBNome.text;
if FormSocioIncluir.ibtable1.locate(´SOCIO_NOME´,NOME,[])= true
then
begin
break;
ShowMessage(´Este cliente já existe!.´);
FormSocioIncluir.edbNome.setfocus;
end;
end;
O Problema é o seguinte...
Eu gostaria de verificar se esse registro já existe, se a reposta for sim ´Registro existente:
1 - cancelar a gravação.
2 - Enviar mensagem informando que já existe.
3 - O campo de inseção do registro ganha-se foco.
Utilizei esses códigos abaixo mas não obtive resultado desejado...
Agradeço qualquer informação.
Ass: Max..
procedure TProjetoModule.IBTSociosBeforePost(DataSet: TDataSet);
var
Nome:string;
begin
Nome:= FormSocioIncluir.eDBNome.text;
if FormSocioIncluir.ibtable1.locate(´SOCIO_NOME´,NOME,[])= true
then
begin
break;
ShowMessage(´Este cliente já existe!.´);
FormSocioIncluir.edbNome.setfocus;
end;
end;
Maxsoftware
Curtidas 0
Respostas
Adilsond
25/01/2004
procedure TForm1.IBTable1BeforePost(DataSet: TDataSet); begin if DataSet.State <> dsInsert then Exit; with TIBQuery.Create(nil) do try Database := (DataSet as TIBTable).Database; Transaction := (DataSet as TIBTable).Transaction; SQL.Clear; SQL.Add(´SELECT SOCIO_NOME´); SQL.Add(´FROM NomeTabela´); SQL.Add(´WHERE SOCIO_NOME = ´ + QuotedStr(DataSet.Fields[0].AsString)); Open; try if not IsEmpty then begin FormSocioIncluir.edbNome.SetFocus; raise EDatabaseError.Create(´Este cliente já existe!.´); end; finally Close; end; finally Free; end; end;
GOSTEI 0
Crash
25/01/2004
Coloque uma nova query com uma consulta que abrá somente o registro que vc quer testar. Coloque o seguinte comando SQL nela.
SELECT SOCIO_NOME FROM TABELA
WHERE UPPER(SOCIO_NOME) = :vSOCIO_NOME
No evento OnBeforePost coloque:
SELECT SOCIO_NOME FROM TABELA
WHERE UPPER(SOCIO_NOME) = :vSOCIO_NOME
No evento OnBeforePost coloque:
Query.Params[0].Value:= UPPERCASE(FormSocioIncluir.eDBNome.text); Query.Open; if Query.RecordCount > 0 then begin ShowMessage(´Registro já existe.´); Query.Close; Abort; end; Query.Close;
GOSTEI 0