Verificar alterações pendentes

10/07/2008

1

Olá amigos,

Gostaria de saber qual a melhor forma de identificar alterações pendentes, como inserção, edição e exclusão. Utilizo sqlquery-provider-clientdataset-datasource.
Minha intenção é dar um aviso de alterações pedentes caso a aplicação seja fechada antes do applyupdates.


Responder

Posts

10/07/2008

Joaoshi

Colega, utilize o [b:eec50d2236]ChangeCount[/b:eec50d2236].

if SeuClientDataSet.ChangeCount = 0  then
  ShowMessage(´Não tem pendencia´)
else
  ShowMessage(´Tem pendencia´);


Espero ter ajudado.


Responder

10/07/2008

Du_nirvana

Olá, pensei em algo mais genérico:

procedure TForm_Mpadrao.FormCloseQuery(Sender: TObject;
  var CanClose: Boolean);
var
  vl_i: integer;
  vl_c: integer;

begin
  vl_c := 0;
  //procura por ClientDatasets da aplicação
  FOR vl_i := 0 TO ComponentCount-1 DO
    BEGIN
      //quando encontra verifica se ocorreu alguma alteração
      IF Components[vl_i].ClassType = TClientDataSet THEN
        BEGIN
          TClientDataSet( Components[vl_i] ).Next;
          IF TClientDataSet( Components[vl_i] ).ChangeCount <> 0 THEN
            Inc(vl_c);
        END;
    END;
  //se enocontrou alguma alteração mostra mensagem
  IF vl_c <> 0 THEN
    BEGIN
      IF MessageDlg( ´(´+IntToStr(vl_c)+´) Alteração(ões) Pendentes.´,
            mtWarning, [mbYes, mbNo],0) = mrYes THEN
        CanClose := FALSE
      ELSE
        CanClose := TRUE;
    END;
end;



Responder