Fórum Gravar com banco firebird / clientedataset #353756

15/02/2008

0

Estou usando o banco Firebird 1.5 com Ibexpert.

No botão gravar

DM.ClientDataSet.Post;
DM.ClientDataSet.ApplyUpdates(0);
DM.ClientDataSet.Refresh;

Auto incremento no banco.

O que ocorre quando gravo o registro, ele vai para o primeiro por causa do refresh.

Alguem teria alguma solução?


Soupinto

Soupinto

Responder

Posts

15/02/2008

Emarcolongo

Qual a duvida ?

Vc quer que ele fique no ultimo depois do insert ?
depois do refresh coloque: DM.ClientDataSet.Last;

Ou tire o refresh para continuar no mesmo...

Qualquer coisa manda ai.,


Responder

Gostei + 0

15/02/2008

Soupinto

Qual a duvida ? Vc quer que ele fique no ultimo depois do insert ? depois do refresh coloque: DM.ClientDataSet.Last; Ou tire o refresh para continuar no mesmo... Qualquer coisa manda ai.,


certo isso eu fiz coloquei o last, mas no editar qnd eu edito por exemplo o segundo registro e aperto gravar ... se tiver o DM.ClientDataSet.Last; vai para ultimo e senão vai para o primeiro.


Responder

Gostei + 0

15/02/2008

Dor_poa

Isso acontece porque você da o ApplyUpdates.

ApplyUpdates é igual ao COMMIT

Nesse caso ele sempre retornará para o 1º registro...!!
uma saída boba, seria vc armazenar antes do POST em uma variavel a chave do registro atual e depois dar um locate!

vlrChave := DM.ClientDataSet.Fieldbyname(´CAMPO´).asstring;
DM.ClientDataSet.Post;
DM.ClientDataSet.ApplyUpdates(0);
DM.ClientDataSet.locate(´CAMPO´, vlrChave, []);

Essa seria uma saida para vc!


Responder

Gostei + 0

15/02/2008

Host

Amigo usa o TStrBookMark ou BookmarkStr naum lembro o nome ... sou daquelas q nao tem memoria ... so referencia hehehehhe


Responder

Gostei + 0

15/02/2008

Ffabiop

sim Host, acho que falas do TBookMark:

var
Registro: TBookMark;

begin
DM.ClientDataSet.Post;
DM.ClientDataSet.ApplyUpdates(0);
Registro := DM.ClientDataSet.GetBookMark;
DM.ClientDataSet.Refresh;
DM.ClientDataSet.GotoBookmark(Registro);
end;


Responder

Gostei + 0

14/04/2008

Crpavao

Colega,
Apenas tire o .Refresh. Só isso. Após o applyupdates(0) o cursor fica no mesmo registro.


Responder

Gostei + 0

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

Aceitar