Fórum Gravar com banco firebird / clientedataset #353756
15/02/2008
0
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
Curtir tópico
+ 0Posts
15/02/2008
Emarcolongo
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.,
Gostei + 0
15/02/2008
Soupinto
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.
Gostei + 0
15/02/2008
Dor_poa
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!
Gostei + 0
15/02/2008
Host
Gostei + 0
15/02/2008
Ffabiop
var
Registro: TBookMark;
begin
DM.ClientDataSet.Post;
DM.ClientDataSet.ApplyUpdates(0);
Registro := DM.ClientDataSet.GetBookMark;
DM.ClientDataSet.Refresh;
DM.ClientDataSet.GotoBookmark(Registro);
end;
Gostei + 0
14/04/2008
Crpavao
Apenas tire o .Refresh. Só isso. Após o applyupdates(0) o cursor fica no mesmo registro.
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)