Atualização com ClientDataSet
Pessoal,
Quando eu clico no botão Novo, executa o comando cdsPadrao.Append. Aí em preencho os campos e clico em Gravar executando assim o cdsPadrao.Post e em seguida o ApplyUpdates.
Se logo depois eu clicar no botão Editar executa o cdsPadrao.Edit. Só que depois eu clico no botão Gravar e não esta atualizando os dados na base de dados.
O que pode ser?
Estou usando Delphi 2006, SQL Server com Multicamadas.
Desde já agradeço.
Cristiano Mário
Quando eu clico no botão Novo, executa o comando cdsPadrao.Append. Aí em preencho os campos e clico em Gravar executando assim o cdsPadrao.Post e em seguida o ApplyUpdates.
Se logo depois eu clicar no botão Editar executa o cdsPadrao.Edit. Só que depois eu clico no botão Gravar e não esta atualizando os dados na base de dados.
O que pode ser?
Estou usando Delphi 2006, SQL Server com Multicamadas.
Desde já agradeço.
Cristiano Mário
Cristianojedi
Curtidas 0
Respostas
Thomaz_prg
18/01/2006
Quais componentes está usando como conexão com o banco de dados?? (ADO, DBX, BDE, etc)
GOSTEI 0
Cristianojedi
18/01/2006
ADO...
Cristiano
Cristiano
GOSTEI 0
Thomaz_prg
18/01/2006
Antes de verificar se é algum problema no CDS, verifique se não está sendo retornado nenhum erro para o CDS. No evento OnReconcileError coloque o código:
Isso fará com que, se houver erros, o mesmo seja mostrado. Outra coisa, se você não estiver ´commitando´ a transação, tente fazer isso manualmente. No evento BeforeApplyUpdates do DataSetProvider coloque:
e no AfterApplyUpdates:
Isso forcará o sistema a gravar os dados. Normalmente o proprio CDS deveria fazer isso, mas acontece que com alguns componentes (IBX por exemplo) isso não ocorre. As alterações ficam pendentes até que se feche a aplicação cliente.
raise Exception.Create( E.Message );
Isso fará com que, se houver erros, o mesmo seja mostrado. Outra coisa, se você não estiver ´commitando´ a transação, tente fazer isso manualmente. No evento BeforeApplyUpdates do DataSetProvider coloque:
if not ADOConnection1.InTransaction then ADOConnection1.BeginTrans;
e no AfterApplyUpdates:
if ADOConnection1.InTransaction then ADOConnection1.CommitTrans;
Isso forcará o sistema a gravar os dados. Normalmente o proprio CDS deveria fazer isso, mas acontece que com alguns componentes (IBX por exemplo) isso não ocorre. As alterações ficam pendentes até que se feche a aplicação cliente.
GOSTEI 0
Cristianojedi
18/01/2006
Ok!!!
Em casa eu vou testar e posto aqui depois.
Muito obrigado, thomaz_prg!!!
Cristiano Mário
Em casa eu vou testar e posto aqui depois.
Muito obrigado, thomaz_prg!!!
Cristiano Mário
GOSTEI 0