Fórum Salvando dados em ClientDataset... #130689
19/03/2010
0
begin dmAdo.cdsProduto.Post;
dmAdo.cdsProduto.ApplyUpdates(0);
if dmAdo.cdsProduto.ApplyUpdates(0) <> 0 then
Showmessage('Não foi possível gravar as informações'); dmAdo.cdsProduto.Close;
dmAdo.cdsProduto.Open; ModalResult := mrOk; end;
aguardo retorno
Irenildo Carvalho
Curtir tópico
+ 0Posts
19/03/2010
Rodrigo Mourão
Em primeiro lugar quando trabalhamos com ClientDataSet não precisamos do Post, somente do applyupdates. Isso nada tem haver com seu problema apenas para constar.
Agora o ClientDataSet gera o que eu chamo de erro silencioso. Como ele foi feito para trabalhar em aplicacao multi camadas entao os erros nao saltam na app. Faça o seguinte. Selecione este CDS e va no evento OnReconcilerError e coloque o seguinte:
ShowMessage(E.Message);
Isso vai mostrar na tela o mensagem do erro. Eu acredito que deve ser campo requerido mas faça o teste e coloque aqui a mensagem.
No aguardo.
Att,
Gostei + 0
20/03/2010
Irenildo Carvalho
Gostei + 0
23/03/2010
Rodrigo Mourão
Quando o campo e auto incremento no banco de dados temos que informar que ele nao e requerido pois senao o delphi nao grava pois vc nao vai informar este campo, ele sera gerado pelo banco. Mas ele so vai ser gerado quando vc gravar entao ficamos numa sinuca de bico. Se grava se eu informar e so gera se eu gavar entao todo campo auto incremento no banco de dados temos que informar que ele nao e requerido.
Agora devemos fazer isso so no ClientDataSet ou no SqlDataSet tambem. Se vc adicionou o field no SqlDataSet entao tera que configurar la tb. Eu sempre adiciono no SqlDataSet, configuro e depois adicione no CDS.
Att,
Gostei + 0
23/03/2010
Irenildo Carvalho
Gostei + 0
24/03/2010
Rodrigo Mourão
Bem existem sim alguma regras, o DataSerProvider serve para poder gerar as instruções sql automaticamente. Você apenas da um apply update no CDS e o Provider sera Insert, Delete, Update ou quando da um open gera um select.
Coom isso e feito de forma automatica vc pode atraves dos flags dizer qula campo entra no where ou vai ser atualizado atras do pfUpdate ou pfWhere, ou qual campo e chava pfKey ou qual e requerido, pfRequired.
Basicamente seria isso.
Att,
Gostei + 0
24/03/2010
Irenildo Carvalho
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)