Deleta registro apenas na segunda tentativa.
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 :
Estou usando o banco de dados MySQL, os componentes Zeos e InfoPower.
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
Curtidas 0
Respostas
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
09/03/2005
inverta: apague primeiro os itens. depois o registro mestre.
GOSTEI 0
Douglasf
09/03/2005
uso delphi 6
GOSTEI 0
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.
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
09/03/2005
sobe...
GOSTEI 0
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.
*desde que aceite mais de uma instrução SQL.
GOSTEI 0
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.
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