Refresh em ClientDataSet

Delphi

06/10/2009

Pessoal, estou enfrentando um pequeno problema. Tenho um TClientDataSet
que faço um SELECT e abro ele no registro 1 da tabela de clientes.

Dou um insert, salvo os dados e ele salva no banco de dados.

Porém quando eu dou um Refresh neste ClientDataSet, ele não está no registro inserido, mas no registro anterior, antes de eu dar Insert.

Estou usando DBExpressa + SQL Server 2005. O campo ClienteID é identity e eu não passo ele como obrigatório.

[]s,

Marlon


Et.vinny

Et.vinny

Curtidas 0

Respostas

Steve_narancic

Steve_narancic

06/10/2009

Esta dando um applyupdates logo após o post?


clientdataset.post;
clientdataset.applyupdates(0);



GOSTEI 0
Et.vinny

Et.vinny

06/10/2009

Sim, estou usando.
Mas todos os Fields que são PK do ClientDataSet e do SQLQuerry, estão com a seguinte configuração.

Fields[0].ProviderFlags := [pfInUpdate, pfInWhere, pfInKey];
Fields[0].Required := False;


Abraços

Marlon


GOSTEI 0
Catunda

Catunda

06/10/2009

o refresh fecha e abre o dataset, por isso volta ao registo inicial.
se vc quer que ele permaneça no registro atual, tem de guardar a chave primária do novo registro ou do que foi alterado e dar um locate após o refresh.


GOSTEI 0
Steve_narancic

Steve_narancic

06/10/2009

Porque voce precisa dar um refresh???


GOSTEI 0
Et.vinny

Et.vinny

06/10/2009

Como eu uso campo Identity do SQL Server, e o usuário der um Edit após o ApplyUpdate, ele diz que o registro não existe. Por causa que o campo não volta automaticamente.

Por isto tenho que fazer algo, para recuperar este valor.


GOSTEI 0
Et.vinny

Et.vinny

06/10/2009

Como eu uso campo Identity do SQL Server, e o usuário der um Edit após o ApplyUpdate, ele diz que o registro não existe. Por causa que o campo não volta automaticamente.

Por isto tenho que fazer algo, para recuperar este valor.


GOSTEI 0
Luiz_aquino

Luiz_aquino

06/10/2009

Pessoal, estou enfrentando um pequeno problema. Tenho um TClientDataSet que faço um SELECT e abro ele no registro 1 da tabela de clientes. Dou um insert, salvo os dados e ele salva no banco de dados. Porém quando eu dou um Refresh neste ClientDataSet, ele não está no registro inserido, mas no registro anterior, antes de eu dar Insert. Estou usando DBExpressa + SQL Server 2005. O campo ClienteID é identity e eu não passo ele como obrigatório. []s, Marlon


o locate seria o melhor!

Query.Locate(\´nome_do_campo\´, Edit.text, []);


GOSTEI 0
Et.vinny

Et.vinny

06/10/2009

Estou vendo a melhor maneira.

:)

Valeu galera.....


GOSTEI 0
POSTAR