ApplyUpdates não atualiza!
Pessoal, por favor me ajudem...já faz 1 semana e ainda não consegui resolver o problema:
Tenho a seguinte estrutura:
ADOConnection - ADODataSet - Provider - ClientDataSet - DataSource
----------------------------------------------------------------------------------
Meu banco é o MySQL, e tenho uma tabela com os campos
codigo (autonumeracao)
nome (texto)
----------------------------
Após ligar os componentes fiz o seguinte com o ADODataSet:
1.Ativei o Fields Editor do ADODataSet e configurei apenas o campo ´nome´
2.Fui em Provider Flags e o defini como pflnUpdate e pnlnWhere
3.Fui na propriedade parameters deste componente e adicionei o campo ´nome´
Com o ClientDataSet fiz:
1. Botão direito do mouse e Fetch Params
No Código do botão de inclusão coloquei:
clientDataSet1.Append;
clientDataSet1.Params.ParamByName(´nome´).AsString:=edtNome.Text;
clientDataSet1.Post;
clientDataSet1.ApplyUpdates(-1);
O problema é que o registro não é incluido (atualizado) na tabela. O processo não gera erro, a não ser que eu acrescente um refresh no clientDataSet1 após a ApplyUpdates(-1). O erro é o seguinte:
´ClientDataSet1: Must apply updates before refreshing data´
Porque este erro ocorre se o AppyUpdates(-1) foi aplicado antes do refresh?
Obrigada pela atenção
Tenho a seguinte estrutura:
ADOConnection - ADODataSet - Provider - ClientDataSet - DataSource
----------------------------------------------------------------------------------
Meu banco é o MySQL, e tenho uma tabela com os campos
codigo (autonumeracao)
nome (texto)
----------------------------
Após ligar os componentes fiz o seguinte com o ADODataSet:
1.Ativei o Fields Editor do ADODataSet e configurei apenas o campo ´nome´
2.Fui em Provider Flags e o defini como pflnUpdate e pnlnWhere
3.Fui na propriedade parameters deste componente e adicionei o campo ´nome´
Com o ClientDataSet fiz:
1. Botão direito do mouse e Fetch Params
No Código do botão de inclusão coloquei:
clientDataSet1.Append;
clientDataSet1.Params.ParamByName(´nome´).AsString:=edtNome.Text;
clientDataSet1.Post;
clientDataSet1.ApplyUpdates(-1);
O problema é que o registro não é incluido (atualizado) na tabela. O processo não gera erro, a não ser que eu acrescente um refresh no clientDataSet1 após a ApplyUpdates(-1). O erro é o seguinte:
´ClientDataSet1: Must apply updates before refreshing data´
Porque este erro ocorre se o AppyUpdates(-1) foi aplicado antes do refresh?
Obrigada pela atenção
Silvana
Curtidas 0
Respostas
Biscalquini
18/07/2003
Coloque ClienteDataSet.ApplyUpdates(0), se vc colocar (-1) ele não limita o número de erros e não apaecerá a mensagem de erro que está dando no banco. O erro que vai ocorrer é que o campo chave precisa ter um valor. Se vc está incrementado o campo chave através de um trigger vc tem que passar o valor 0 (zero) para este poder assumir o valor correto que será incrementado pela trigger
Espero ter ajudado
Espero ter ajudado
GOSTEI 0
Czapelini
18/07/2003
Olá Silvana,
Por acaso conseguisse resolver o problema do apllyUpdates?
Já tentei passando zero (0) e (-1) e não tem jeito.
Trabalha normal na memória mas não vai para o banco fisicamente.
Também dá o mesmo erro no refresh.
Se puderes me ajudar te agradeço!
Um abraço e até mais!
Por acaso conseguisse resolver o problema do apllyUpdates?
Já tentei passando zero (0) e (-1) e não tem jeito.
Trabalha normal na memória mas não vai para o banco fisicamente.
Também dá o mesmo erro no refresh.
Se puderes me ajudar te agradeço!
Um abraço e até mais!
GOSTEI 0
Ruben
18/07/2003
Dá um showMessage na mensagem da Exceção que vai para o evento OnReconcileError do ClientDataset.
Os erros provenientes de atualização nos ClientDatasets não geram a mensagem de erro padrão do Delphi, mas você pode tratá-los nesse evento.
Os erros provenientes de atualização nos ClientDatasets não geram a mensagem de erro padrão do Delphi, mas você pode tratá-los nesse evento.
GOSTEI 0
Czapelini
18/07/2003
Obrigado Ruben, realmente era isso. Estava dando um erro no banco que não era mostrado, mas tratando neste evento do ClientedataSet consegui descobrir.
Valeu!
Valeu!
GOSTEI 0