ApplyUpdates não atualiza!

Delphi

18/07/2003

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


Silvana

Silvana

Curtidas 0

Respostas

Biscalquini

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


GOSTEI 0
Czapelini

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!


GOSTEI 0
Ruben

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.


GOSTEI 0
Czapelini

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!


GOSTEI 0
POSTAR