Dúvida no evento OnReconcileError
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.
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
Curtidas 0
Respostas
G1b4
12/08/2004
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: !!!
Espero tê-lo ajudado :wink: !!!
GOSTEI 0
Rafs
12/08/2004
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
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
GOSTEI 0
G1b4
12/08/2004
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...
GOSTEI 0
Rafs
12/08/2004
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 :?
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 :?
GOSTEI 0
G1b4
12/08/2004
O OnUpdateError é disparado quando há erro na atualização de dados.
Rafs, vow fazer uns testes aki... aew te dou uma resposta, ok?
Rafs, vow fazer uns testes aki... aew te dou uma resposta, ok?
GOSTEI 0
Rafs
12/08/2004
Fico muito grato...
GOSTEI 0
Jpaulorio
12/08/2004
Tenho o mesmo problema do Rafs. Já tentei de tudo e nada? Vcs já descobriram qual o problema?
GOSTEI 0
Rafs
12/08/2004
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.
Hoje estou verificando o que o usuário seleciona para saber se executo um novo ApplyUpdates ou um CancelUpdates.
GOSTEI 0