ApplyUpdates(0) do ClientDataSet

14/05/2003

1

Estou desenvolvendo um aplicativo simple com Firebird e DBExpress, ao tentar realizar o ApplyUpdates(0) do ClientDataSet de lançamentos efetuados em grid recebo a seguinte menssagem : unabled to find record. No key specifiend.
Será que alguem pode me ajudar?
Grato.


Responder

Posts

14/05/2003

Martelato

esperimente usar ApplyUpdates(-1), este erro é porque algum campo do registro vc deixo de preencher corretamente, entao o (0), quer dizer, que ñ pode ter nenhum erro, agora (-1), ele ignora o erro.
falou.


espero que tenha te ajudado

:)


br@edxmy#


Responder

14/05/2003

Dbezerra

falae cumpadi!

provavelmente em algum dos seus clientdatasets o campo chave de uma tabela estah em branco, nulo...
se vc estah utilizando o esquema de mestre-detalhe, vc deve fazer o seguinte:
no OnNewRecord dos ClientDataSets atribua ao campo chave um valor q teoricamente seria invalivado para uma chava, por exemplo, -1.
No BeforeUpdateRecords do DataSetProvider o q estah ligado ao ClientDataSet mestre, verifique se estah sendo inserido algo (if UpdateKind = ukInsert then...). Depois verifique se a SQLQuery (eu suponho q seja esta) onde estah sendo inserida eh a query mestre (if SourceDS = qryPessoa, sendo q qryPessoa eh a SQLQuery mestre).
se for verdadeiro traga do banco o max() da chave + 1 e atribua ao campo de chave do parametro DeltaDS do BeforeUpdateRecords (DeltaDS.FindField(´CodPessoa´).NewValue := (Max(CodPessoa) + 1).
guarde este max()+1 de alguma forma pq, causo a query q esteja sendo inserida seja uma query de detalhe (qryCliente, por exemplo) vc deverah apenas atribuir o valor da variavel de max()+1 para o campo chave do DeltaDS, assim como vc fez ateriormente, soh q sem gerar um novo sequencial.

:D espero ter ajudado... :D


Responder