Fórum duvida com Refresh em Clientdataset #412597
09/02/2012
0
tenho um banco de dados feito em firebird e uso os seguites componentes para manipular
SQLTable1, DataSetProvider1, ClientDataSet1, DataSource1.
Estou gravando da seguite forma
ClientDataSet1.ApplyUpdates(-1); ClientDataSet1.Refresh;
O problema é que quando mando salvar, a tabela vai para o primeiro registro e eu preciso que permaneça no mesmo registro. Eu preciso usar o refresh para poder gerar o ID automatico (pela trigger).
Tentei usar um Locate, mas a unica referencia seria o ID mas ele so é criado depois do Refresh.
Alguem tem alguma sugestão?
Valdenir Matos
Curtir tópico
+ 0Posts
10/02/2012
Marco Salles
Ao inves do Refresh , voce fizer um clientdataset.close seguido de um clientdataset.open
ai sim voce alteraria o cursor para o primeiro registro . Então se esta alterando deve
ser aluguma coisa a mais que voce tem no código e não o Refresh ...
Para ver que o Refresh não movimenta o cursor faça um teste simplescom a tabela COUNTRY
do firebird ... ( Formulario sem código nenhum ) adicione um regustro e aplica seguido de
REfresh o Cursor fica parado . Faça o mesmo exemplo utilizando o OPne close e verá que
o Cursor vai para o Primeirp Registro
De qualquer modo pesquisevor variáveis Opacas ( Bookmark ) em algumas das vezes ela é
usada para manter a posição do cursor . Porpem reitero que deve ser algo pertinente ao seu
código ( eventos ) que alteram a posição do cursor e não o Refresh em si
Gostei + 0
10/02/2012
Valdenir Matos
fiz uma rotina que deu certo.
antes do refresh verifica se o ID tem valor, se tiver então é uma alteração e posso usar o locate se não é uma inserção e uso o last.
funcionou certinho, mas se alguem tem alguma dica melhor eu agradeço.
Gostei + 0
10/02/2012
Marco Salles
Voce diz :
tenho um banco de dados feito em firebird e uso os seguites componentes para manipular
SQLTable1, DataSetProvider1, ClientDataSet1, DataSource1.
Estou gravando da seguite forma
#Código
ClientDataSet1.ApplyUpdates(-1);
ClientDataSet1.Refresh;
E eu te dei um exemplo com a Tabela Country do Banco EMPLOYEE do Firebird
Faça o teste e veja que o Refresh não Modifica , a não ser que ************
Voce esteja Trabalhando com MESTRE/DETALHE
e este o caso ?????
Gostei + 0
10/02/2012
William
Gostei + 0
10/02/2012
William
Gostei + 0
10/02/2012
Marco Salles
Voce poderia por gentileza , montar um pequeno exemplo onde ocorre esta imperfeição , e me enviar por emai
(Sem o .Exe) para que possamos achar uma solução
salhamoda@uol.com.br
marco@salhamoda.com.br
Gostei + 0
13/02/2012
Daniel Santos
Gostei + 0
13/02/2012
Marco Salles
então Daniel , eu ja tinha comentado sobre isto no inicio de minha postagens
De qualquer modo pesquisevor variáveis Opacas ( Bookmark ) em algumas das vezes ela é
usada para manter a posição do cursor . Porpem reitero que deve ser algo pertinente ao seu
código ( eventos ) que alteram a posição do cursor e não o Refresh em si
Mas ainda acho estranho o refresh mudar o cursor ( salvo em Mestre/Detalhe)
Gostei + 0
01/04/2013
Elton Souza
É exatamente o que o Marco falou, o Refresh não tira o ponteiro o problema é quando se usa (Ex: Order by na query) e MESTRE DETALHE.
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)