Dúvida no evento OnReconcileError

12/08/2004

0

Caros colegas,

Estou com uma dúvida no evento OnReconcileError do ClientDataSet.
Depois de muito ´lutar´, consegui fazer funcionar o HandleReconcileError satisfatóriamente, porém, após optar por atualizar o servidor (opção raMerge) está sendo necessário executar, novamente, o comando ApplyUpdates do CDS.
No momento em que eu escolho a opção raMerge, o sistema não devería atualizar imediatamente o servidor? Digo, as informações, atualizadas, não deveríam estar disponíveis para outros clientes sem a necessidade de executar o comando ApplyUpdates novamente?

Grato.


Rafs

Rafs

Responder

Posts

14/08/2004

G1b4

Caro Rafs, a opção raMerge (TReconcileAction) deveria sim atualizar o banco de dados. Verifique se as chaves primárias estão como pfInKey e o provider UpdateMode está setado como upWhereKeyOnly, porque se os campos forem modificados por outra pessoa, essa atualização não ocorrerá.

Espero tê-lo ajudado :wink: !!!


Responder

16/08/2004

Rafs

Pois é g1b4,

No field do componente SQLDataSet, que se refere à chave primária no banco de dados eu coloquei a propriedade pfInKey para True, mas no DataSetProvider a opção UpdateMode está em upWhereAll, pois quando coloquei para upWhereKeyOnly o evento OnReconcileError não foi executado (estranho, não é?).
Já testei nas três opções de configuração do DataSetProvider, mas somente quando upWhereAll o evento foi executado, porém preciso executar duas vezes o ApplyUpdates, uma antes, no qual executa o evento OnReconcileError e outra depois (quando o usuário manda corrigir (raMerge)) para confirmar no BD.
Minha cofinguração é esta:
SQLConnection -> SQLDataSet -> DataSetProvider -> ClientDataSet.
No SQLDataSet adicionei os campos do BD através da opção AddFields (FieldEditor).
No Field que corresponde à minha chave primária do BD, mudei a propriedade pfInKey para True
No DataSetProvider a propriedade UpdateMode está como upWhereAll (devido ao problema citado anteriormente)

Não sei se faz diferença, mas utilizo Delphi7 Professional com Update atualizado (Build 8.1).

Obrigado pela atenção


Responder

16/08/2004

G1b4

Muito estranho mesmo, Rafs... Tente o seguinte, deixe o sqldataset como está e acrescente no clientedataset pelo fields editor todos os campos e configura também as flags conforme o seu sqldataset. Aí mude o modo de atualização do provider para upWhereKeyOnly e vê se funciona...


Responder

16/08/2004

Rafs

Fiz conforme vc disse, mas não houve resultado.
Inclusive refiz o FieldsEditor dos dois componentes (SQLDataSet e ClientDataSet), alterei a propriedade pfInKey para True do campo que é chave primária nos dois componentes mas o resultado é o mesmo, o evento OnReconcileError não é executado.
Também verifiquei se o evento OnUpdateError do DataSetProvider é executado em caso de erro, mas este também não o é.

Estou sem idéias do que fazer a partir de agora... rs :?


Responder

17/08/2004

G1b4

O OnUpdateError é disparado quando há erro na atualização de dados.
Rafs, vow fazer uns testes aki... aew te dou uma resposta, ok?


Responder

17/08/2004

Rafs

Fico muito grato...


Responder

14/01/2005

Jpaulorio

Tenho o mesmo problema do Rafs. Já tentei de tudo e nada? Vcs já descobriram qual o problema?


Responder

14/01/2005

Rafs

Infelizmente até o momento eu não consegui descobrir o problema.
Hoje estou verificando o que o usuário seleciona para saber se executo um novo ApplyUpdates ou um CancelUpdates.


Responder

Que tal ter acesso a um e-book gratuito que vai te ajudar muito nesse momento decisivo?

Ver ebook

Recomendado pra quem ainda não iniciou o estudos.

Eu quero
Ver ebook

Recomendado para quem está passando por dificuldades nessa etapa inicial

Eu quero

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar