Fórum Problema com gravação. #196086

19/11/2003

0

Pessoal, preciso de ajuda, tenho uma aplicação que eu cadastro meus produtos e gravo da seguinte maneira:

Dm.ClientDataSetProdutos.Post;
Dm.ClientDataSetProdutos.ApplyUpdates(0);

Enfim...

Tenho tb uma tela de “Entrada de Produtos”, que faço uma pesquisa na tabela de produtos pra incluir meus itens de entrada.

Pois bem, quando eu cadastro algum produto (XXXXXX), gravo e saio da tela de “Cadastro de Produtos”, e vou para a tela de “Entrada de Produtos”, e faço a pesquisa para incluir o produto que acabei de cadastrar (XXXXXX), a pesquisa não encontra este produto que acabei de cadastrar. Eu tenho que finalizar o aplicativo, e entrar novamente, e ai sim o produto (XXXXXX), é encontrado pela pesquisa na tela de “Entrada de Produtos”.

Resumindo, o registro só é fisicamente gravado quando saio da aplicação. Mas eu estou usando o post e applyUpdates!!!!! O que estou fazendo de errado???

Uso um DataModule, IBDataSet, ClientDataSet (interbase) palheta IBX

Agradeço a ajuda


Fabio.palm

Fabio.palm

Responder

Posts

20/11/2003

Maxsoftware

Dm.ClientDataSetProdutos.ApplyUpdates(0);

Este comando deve linpar da memória então feche e abra a table sempre que gravar ou use o Dm.ClientDataSetProdutos.ApplyUpdates;

Max...


Responder

Gostei + 0

21/11/2003

Rafael_gamba

Use o seguinte comando no evento after post de sua tabela :
DBISaveChanges(Tabela.Handle);
Tabela.Refresh;

para isso acrescente em Uses a biblioteca DBIProcs.
Não tem erro!!! Um abraço!!!


Responder

Gostei + 0

21/11/2003

Lordglacius

Vc não deu o Commit da transação em que vc está! :shock:

No Interbase qualquer tipo de dado gravado deve ser liberado da transação qual se encontra. Utilizando o comando Commit ou CommitRetaining. No primeiro caso, vc simplesmente atualiza a transação, faz o flush dos dados para o banco e fecha qualquer DataSet ligado à esta transação. No segundo caso, a transação atualiza o banco de dados, mas somente para a sua transação, não fechando os DataSets ligados à mesma (os outros usuários do programa não poderão ver as informações que vc acabou de gravar).

Recomendo o seguinte: Utilize duas IBTransactions: Uma para listagem e uma para atualização de dados. Assim quando vc ´COMMITA´ a transação de atualização de dados, a de listagem continua funcionando, bastando vc reiniciar esta e ter o acesso aos dados alterados anteriormente na outra transação. 8)

No caso acima, vc verá as novas informações atualizadas assim como os outros usuários do seu programa na rede.

Qq dúvida manda aeh que a gnt te ajuda com isso... transações no IB são um saco mesmo cara.. até vc se acostumar ou definir uma politica de tratamento da mesma em suas aplicações... :twisted:

[]´s


Responder

Gostei + 0

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

Aceitar