Gravar dados no GDB

Delphi

06/05/2004

Estou com dúvida em como( e quais ) ligar os componentes para gravar dados em um banco de dados IB. Estou fazendo da seguinte forma:
DataSourse -> ClientDataSet -> DataSetProvider -> IBQuery;IBTransaction -> IBDataBase

E para gravar os dados estou usando o seguinte comando:
ClientDataSet.ApplyUpdates(-1);

Mas os dados não estão sendo salvos no banco de dados!

Os dados estão ligados e são exibidos corretamente, porem não consigo realizar alterações nem incluir novos dados!
O que será que está errado?


Programador

Programador

Curtidas 0

Respostas

Dopi

Dopi

06/05/2004

Manipule o evento OnREconcileError do seu ClientDataSet e verifique a msg de erro..

O delphi já possui um formulario padrao para ReconcileError no Object Repository


procedure Tldm.cdsTerminalReconcileError(DataSet: TCustomClientDataSet;
E: EReconcileError; UpdateKind: TUpdateKind;
var Action: TReconcileAction);
begin
Action := HandleReconcileError(DataSet, UpdateKind, E);
end;


GOSTEI 0
Programador

Programador

06/05/2004

Caro colega,

esse código que passou acima, não compilou, entretanto, acredito nem precisar desse código, pois pelo que vi, é um tratamento de erro, fato que não ocorre em meu programa, ele simplesmente não grava os dados no banco.gdb, as informações ficam apenas em queche de memoria mas nunca chega ao banco.gdb!

Será que alguem pode ajudar-me???


GOSTEI 0
Fer_nanda

Fer_nanda

06/05/2004

depois de executar o cds, dê um ibtransaction.commit;


GOSTEI 0
Dopi

Dopi

06/05/2004

O ClientDataSet não gera nenhuma exceção se você não programar o OnReconcileError... Já passei por problema com o mesmo sintoma que você descreveu....

Experimente somente exibir a msg de erro: ShowMessage(E.message);

procedure Tldm.cdsTerminalReconcileError(DataSet: TCustomClientDataSet;
E: EReconcileError; UpdateKind: TUpdateKind;
var Action: TReconcileAction);
begin
ShowMessage(E.message);
end;


Verifique também o retorno da função ApplyUpdates... Se for maior que 0 é porque algum erro está acontecendo, então use o OnReconcileError para trata-lo...


GOSTEI 0
Comodelphi

Comodelphi

06/05/2004

Código: DataSourse -> ClientDataSet -> DataSetProvider -> IBQuery;IBTransaction -> IBDataBase


Aonde vc leu que era preciso isso tudo pra associar um DataSet? se vc não estiver pretendendo usar MultiTier/DataSnap vc está indo pelo caminho errado.


GOSTEI 0
Programador

Programador

06/05/2004

[quote:388f9e11c2] Código: DataSourse -> ClientDataSet -> DataSetProvider -> IBQuery;IBTransaction -> IBDataBase


Aonde vc leu que era preciso isso tudo pra associar um DataSet? se vc não estiver pretendendo usar MultiTier/DataSnap vc está indo pelo caminho errado.[/quote:388f9e11c2]

Caro colega.

Na verdade, estou desenvolvendo uma aplicação para posteriormente ser migrada para multi-camada! É por isso que estou usando esse metodo para acessar o banco de dados! Se fosse com uma simples tabela ou query, não teria problemas para gravar os dados!

Sacô colega!


GOSTEI 0
POSTAR