Deleta registro apenas na segunda tentativa.

Delphi

09/03/2005

Boa Tarde,

Estou com dois problemas.

O primeiro é que quando peço para remover um determinado registro no DBGrid pelo DBNavigator ele mostra como removido sempre o primeiro registro do DBGrid ao invés de sumir com o registros selecionado.

O Segundo é que se eu pedir para deletar o registro ele dá como deletado mas quando fecho a janela e abro novamente ele aparece lá novamente, porem quando deleto um registro e depois outro no DBGrid ao fechar e abrir a tela novamente ele removeu o registro da segunda tetativa.

*OBS : É claro que o primeiro problema se repete no segundo, foi observado que ele some com a primeira linha do DBGrid mas na verdade esta passando o código de deleção do registro corrente.

Ai vai o Código que estou usando :


procedure TfrmPedidos.qryPedidoBeforeDelete     (DataSet: TDataSet);
begin
  with updPedido.DeleteSQL do
  begin
    Clear;
    Add(´delete from Pedido where PedidoID = ´ + qryPedidoPedidoID.AsString +´;´);
    Add(´delete from Item_Pedido where PedidoID = ´ + qryPedidoPedidoID.AsString);
  end;
  frmPrincipal.conBanco.StartTransaction;
  frmPrincipal.conBanco.AutoCommit := False;
  try
    qryPedido.ApplyUpdates;
    frmPrincipal.conBanco.Commit;
  except
    frmPrincipal.conBanco.Rollback;
  end;  
  qryPedido.CommitUpdates;
end;


Estou usando o banco de dados MySQL, os componentes Zeos e InfoPower.


Douglasf

Douglasf

Curtidas 0

Respostas

Cristiam

Cristiam

09/03/2005

Qual versão do Delphi é esse? Pq no Delphi 2005 eu faço assim:
try 
    qryPedido.ExecuteNonQuery();
    qryPedido.ApplyUpdates; 
    frmPrincipal.conBanco.Commit; 
  except 
    frmPrincipal.conBanco.Rollback; 
  end;  



GOSTEI 0
Emerson Nascimento

Emerson Nascimento

09/03/2005

inverta: apague primeiro os itens. depois o registro mestre.


GOSTEI 0
Douglasf

Douglasf

09/03/2005

uso delphi 6


GOSTEI 0
Douglasf

Douglasf

09/03/2005

continuo com o mesmo problema.

Ele remove sempre o primeiro da lista, mesmo que eu esteja no ultimo da lista. E só remove apartir da segunda vez, e sempre com este problema de sumir sempre o primeiro registro e quando fecho e abro o form ele realmente removeu o registro selecionado.


GOSTEI 0
Douglasf

Douglasf

09/03/2005

sobe...


GOSTEI 0
Emerson Nascimento

Emerson Nascimento

09/03/2005

eu não sei como os componentes Zeos funcionam, mas creio que você poderia ter o código fixo* no updPedido.DeleteSQL e, no OnAfterDelete, somente executar o qryPedido.ApplyUpdates;




*desde que aceite mais de uma instrução SQL.


GOSTEI 0
Douglasf

Douglasf

09/03/2005

Um problema eu já consegui resolver, alterei a propriedade de CachedUpdates para false - pelo menos esta cadastrando.
Mas a parte de não sumir com o registro que esta selecionado ao invés de sumir com o que esta no topo ainda não consegui. O estranho é que quanto tiro a linha qryPedido.ApplyUpdates não tenho mas esse problema.


GOSTEI 0
POSTAR