Fórum Como cancelar uma gravação através o evendo OnBeforePost. #209263

25/01/2004

0

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;


Maxsoftware

Maxsoftware

Responder

Posts

25/01/2004

Adilsond

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;



Responder

Gostei + 0

25/01/2004

Crash

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:

  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;



Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar