Ajuda com ClientDataset
Caros amigos,
Gostaria de ajuda para a seguinte situação.
Utilizo na minha aplicação o IB. E, como estou conhecendo o banco de dados e de quebra conhecendo também o ClientDataset estou encontrando dificuldades para resolver a seguinte situação.
Tabela de apenas um registro. Sem índice.
Na aplicação utilizo os seguintes componentes no Datamodule.
Ibquery, Datasource, Datasetprovider, ClientDataset.
Tudo conectado como uma das matérias que ví na revista do Clube.
Abro assim o dataset.
Try
begin
Wdm.IBQ_cartorio.active := True;
Wdm.CLDTS_cartorio.Active := True;
end;
except
begin
ShowMessage(´Tabela cartório não está acessível no momento´);
Frm_padraocadastro.Close;
end;
E depois gravo assim as alterações
if MessageDlg(´Confirma estes dados ?´,
mtConfirmation, [mbYes, mbNo], 0) = mrYes then
begin
If Wdm.CLDTS_cartorio.State = DsEdit then
begin
Wdm.CLDTS_cartorio.Post;
Wdm.CLDTS_cartorio.ApplyUpdates(-1);
end;
end;
O sistema me retorna o seguinte erro
SQL PARSE ERROR: PARAMETER NAME EXPECTED
Unable to find record: No Key especified
Pergunto:
* Alguma dica para melhorar as rotinas acima ??
* É verdade que utilizando o ClientDataset posso me abster de tratar a transação porque ele faz isso automaticamente.
* Pelo último erro. Tenho que realmente indexar todo arquivo ?? Mesmo sendo ele de apenas um registro ??
Agradecendo mais uma vez essa primorosa oportunidade.
Wellington.
Gostaria de ajuda para a seguinte situação.
Utilizo na minha aplicação o IB. E, como estou conhecendo o banco de dados e de quebra conhecendo também o ClientDataset estou encontrando dificuldades para resolver a seguinte situação.
Tabela de apenas um registro. Sem índice.
Na aplicação utilizo os seguintes componentes no Datamodule.
Ibquery, Datasource, Datasetprovider, ClientDataset.
Tudo conectado como uma das matérias que ví na revista do Clube.
Abro assim o dataset.
Try
begin
Wdm.IBQ_cartorio.active := True;
Wdm.CLDTS_cartorio.Active := True;
end;
except
begin
ShowMessage(´Tabela cartório não está acessível no momento´);
Frm_padraocadastro.Close;
end;
E depois gravo assim as alterações
if MessageDlg(´Confirma estes dados ?´,
mtConfirmation, [mbYes, mbNo], 0) = mrYes then
begin
If Wdm.CLDTS_cartorio.State = DsEdit then
begin
Wdm.CLDTS_cartorio.Post;
Wdm.CLDTS_cartorio.ApplyUpdates(-1);
end;
end;
O sistema me retorna o seguinte erro
SQL PARSE ERROR: PARAMETER NAME EXPECTED
Unable to find record: No Key especified
Pergunto:
* Alguma dica para melhorar as rotinas acima ??
* É verdade que utilizando o ClientDataset posso me abster de tratar a transação porque ele faz isso automaticamente.
* Pelo último erro. Tenho que realmente indexar todo arquivo ?? Mesmo sendo ele de apenas um registro ??
Agradecendo mais uma vez essa primorosa oportunidade.
Wellington.
Winfor
Curtidas 0
Respostas
Fer_nanda
18/05/2004
E depois gravo assim as alterações
if MessageDlg(´Confirma estes dados ?´,
mtConfirmation, [mbYes, mbNo], 0) = mrYes then
begin
If Wdm.CLDTS_cartorio.State = DsEdit then
begin
Wdm.CLDTS_cartorio.Post;
Wdm.CLDTS_cartorio.ApplyUpdates(-1);
end;
end;
O sistema me retorna o seguinte erro
SQL PARSE ERROR: PARAMETER NAME EXPECTED
Unable to find record: No Key especified
Talvez possa lhe dar uma mão.. acredito q esteja faltando vc passar o parametro para o cds...
Wdm.CLDTS_cartorio.insert;
Wdm.CLDTS_cartorio.params.parmbyname(´campo´).asinteger := seuregistro;
Wdm.CLDTS_cartorio.Post;
Wdm.CLDTS_cartorio.ApplyUpdates(-1);
* É verdade que utilizando o ClientDataset posso me abster de tratar a transação porque ele faz isso automaticamente.
Não seria exatamente a transação, pois ela vc controla com seu transaction, o q acontece é q vc só insere (altera, deleta) efetivamente os registros no seu banco após o applyupdates. Fica mais fácil vc trabalhar com os registros e só depois de realmente confirmado vc os joga pro banco.
Existe ainda a vantagem de manipular os resultados, como se fosse uma tabela temporária, é bastante interessante.
Tem um artigo no delphibr.com.br sobre o clientdataset muito bom, dah uma olhada lah.
Espero ter ajudado
GOSTEI 0