Fórum Ajuda com ClientDataset #44346

18/05/2004

0

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.


Winfor

Winfor

Responder

Posts

18/05/2004

Fer_nanda

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


Responder

Gostei + 0

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

Aceitar