Fórum Atualizar dados no formuário após trigger no DB #403058

14/06/2011

0

Boa noite.   Sou novo em programação utilizando banco de dados, por isso não estranhem se a dúvida lhes parecer boba.   Utilizo três tabelas:   Caixa (para abertura e  fechamento do caixa do sistema) Lancamentos_Caixa (para inserir as estradas e saídas do caixa) Saldo (para dar manutenção ao saldo atual do caixa)   No delphi eu estou utilizando o DBX4 para acesso e o banco firebird 2.1   Para visualizar o saldo atual do caixa eu criei uma view, onde, através de um DBEdit eu mostro o saldo para o usuário no formulário do caixa.   O saldo do caixa é atualizado pelo firebird através de uma trigger disparada no after insert e no after edit da tabela lancamentos_caixa.   O problema:   Não está atualizando o saldo na tela (no DB ele está atualizado), mesmo colocando um refresh na view saldo logo após o applyupdates(0) da tabela lancamentos_caixa. Porém, se eu colocar o refresh em um botão, separado do evento que salva uma inserção ou modificação nos lancamentos do caixa, o refresh atualiza normalmente o saldo na tela.   Alguém saberia me dizer qual é o procedimento correto para atualizar os dados na tela que forem provenientes de uma tabela que não seja aquela que está sendo manipulada diretamente, mas que necessitam de atualização, como no caso descrito acima?   Agradeço por sua atenção.    
Volmir Lauermann

Volmir Lauermann

Responder

Posts

15/06/2011

Nigro

Me parece que são transações abertas, se eu estiver certo, você ao fechar e abrir o relatório os dados aparecem, correto? Se for isso, tente fechar os dataset´s e abrir novamente antes de puxar o relatório.
Responder

Gostei + 0

16/06/2011

Volmir Lauermann

Me parece que são transações abertas, se eu estiver certo, você ao fechar e abrir o relatório os dados aparecem, correto? Se for isso, tente fechar os dataset´s e abrir novamente antes de puxar o relatório.
Sim, os datasets estão sempre abertos. Acontece da forma que você descreveu. O correto seria então SEMPRE fechar o dataset quando desejo ter os registros atualizados? Esta solução pareceria meio arcaica, concorda? Eu fiquei perdido na questão porque:   Eu dou uma entrada/saída no caixa. (logo abaixo tem um DBEdit ligado em uma view da tabela SALDO mostrando o saldo do caixa)   Depois de executar o post, uma trigger, no after insert e no after update, vai na tabela SALDO e recalcula o saldo do caixa, então ocorre o ApplyUpdates(0) e nenhum erro é retornado pelo firebird...   Executo o dataset.Refresh(); na tabela SALDO.   O valor, correspondente ao saldo do caixa, não é atualizado no DBEdit.   Vou no IBExperte e virifico o valor que está gravado no campo. Está correto e atualizado.   Volto ao aplicativo e clico em um outro botão que contém a instrução dataset.Refresh(); e o valor do DBEdit é atualizado   Talvez eu não tenha me espressado corretamente no post anterior, mas a minha dúvida é: Porque o dataset não foi atualizado automáticamente após o ApplyUpdates(0)?   Agradeço por qualquer ajuda.   Sucesso à todos!
Responder

Gostei + 0

05/05/2013

José

Este tópico esta sendo fechado por inatividade. Se necessário, sinalizar para que seja reaberto ou abrir um novo.
Responder

Gostei + 0

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

Aceitar