Firebird e DBExpress - ClientDataSet1: Must apply updates be
Bom dia,
Amigos, peguei uma apostila neste site, onde diziam pra utilizar o componente TSQLClientDataSet, mas no Delphi 2005 não tem.
Então, com a ajuda dos foristas utilizei a estrutura:
SQLConnection->SQLDataSet->DataSetProvider->ClientDataSet->DataSource
Preenchi no ClientDataSet a propriedade CommandType como ctTable.
Coloquei em um form, os campos da tabela em DBEdits, arrastando os campos do ClientDataSet e um DBNavigator.
Consigo utilizar as funções do DBNavigator, mas ao clicar no refresh, aparece a mensagem: ClientDataSet1: Must apply updates before refreshing data.
Tem como configurar para que o componente DBNavigator consiga trabalhar com uma base Firebird? Como se fosse paradox.
Obrigado.
A, como TSimpleDataSet acontece a mesma coisa. Estou apanhando pra alguma propriedade.
Amigos, peguei uma apostila neste site, onde diziam pra utilizar o componente TSQLClientDataSet, mas no Delphi 2005 não tem.
Então, com a ajuda dos foristas utilizei a estrutura:
SQLConnection->SQLDataSet->DataSetProvider->ClientDataSet->DataSource
Preenchi no ClientDataSet a propriedade CommandType como ctTable.
Coloquei em um form, os campos da tabela em DBEdits, arrastando os campos do ClientDataSet e um DBNavigator.
Consigo utilizar as funções do DBNavigator, mas ao clicar no refresh, aparece a mensagem: ClientDataSet1: Must apply updates before refreshing data.
Tem como configurar para que o componente DBNavigator consiga trabalhar com uma base Firebird? Como se fosse paradox.
Obrigado.
A, como TSimpleDataSet acontece a mesma coisa. Estou apanhando pra alguma propriedade.
Doug_chagas
Curtidas 0
Respostas
Paulo
29/09/2005
Bem, não conheço o Delphi 2005. Uso o 7. Porem uma coisa vc deve ter em mente. O firebird é unidirecional, como muitos SGDB. Para uma navegabilidade, num grid ou semelhante, eu uso o SIMPLEDATASET. Ele permite a navegabilidade em um banco Unidirecional. Nos posts, de inserção ou semelhante, pesquisas e etc.., eu utilizo Stored Procedure.
GOSTEI 0
Antonio Pereira
29/09/2005
Olá amigo tem como sim... Pode ter outras maneiras mas a que encontrei em testes nos meus programas (firebird / mysql) foi a seguinde:
Va no envento AfterRefresh do ClientDataSet1 e coloque o seguinte:
ClientDataSet1.ApplyUpdates(0);
Veja o Exemplo.
procedure TForm1.ClientDataSet1AfterRefresh(DataSet: TDataSet);
begin
ClientDataSet1.ApplyUpdates(0);
end;
Ok.
Atenciosamente,
Antonio
Va no envento AfterRefresh do ClientDataSet1 e coloque o seguinte:
ClientDataSet1.ApplyUpdates(0);
Veja o Exemplo.
procedure TForm1.ClientDataSet1AfterRefresh(DataSet: TDataSet);
begin
ClientDataSet1.ApplyUpdates(0);
end;
Ok.
Atenciosamente,
Antonio
GOSTEI 0
Bruno Belchior
29/09/2005
a questão é q o CDS imagina q vc só o atualizará quando vc não tiver mais alterações q não estejam refletidas no banco... ou seja o seu delta esstiver limpo... pensando bem não é errado, pois c vc atualizasse seu CDS com o delta preenchido, seria improvável q ele soubesse quais registros atualizar posteriormente, por isso no caso de existirem alterações no CDS, sempre se deve aplicá-las ou cancelá-las...
GOSTEI 0