[firebase-br] Dados excluídos automaticamente

Everton Patricio Pereira evertonkiai em gmail.com
Qui Ago 30 10:14:39 -03 2012


Carlos, obrigado pela sua contribuição. Irei utilizar o FBScanner para a
análise.

Gladiston, agradeço também pela sua ajuda. No que diz respeito às
transações, eu as controlo e finalizo em cada insert/update/delete, não as
deixando, assim, muito tempo abertas. No meu caso, creio que não preciso
colocar um commit ao finalizar a aplicação como um todo pois já faço isso
para cada mudança no banco de dados (se compararmos com o caso do outro
colega).
Quando utilizo apenas um SQLDataSet, eu faço o controle transacional
explicitamente, como mostra o modelo:

   Transacao.TransactionID := 1;
   Transacao.IsolationLevel := xilREADCOMMITTED;
   SQLDataSet.StartTransaction(Transacao);

   try
    SQLDataSet.ExecSQL;
    SQLConnection.Commit(Transacao);
   except
    on E : Exception do
     begin
      SQLDataSet.Rollback(Transacao);
      ShowMessage('Ocorreram erros.'+#13+E.Message);
     end
   end;

No entanto, quando o conjunto de SQLDataSet, DataSetProvider e
ClientDataSet, utilizo apenas o ApplyUpdates no ClientDataSet. Creio que
esse método já chama o commit automaticamente.

No entanto, vi em um forum um camarada utilizando de forma explicita o
commit em conjunto com o ApplyUpdates, como segue o modelo:

    TD.TransactionID := 1;
    TD.IsolationLevel := xilREADCOMMITTED;
    dm.SQLConnection1.StartTransaction(TD);
    try
     dm.cdsClientes.ApplyUpdates(0);
     dm.SQLConnection1.Commit(TD);
    except
     dm.SQLConnection1.Rollback(TD);
    end;

Creio que seja desnecessário, se sevarmos em conta que o ApplyUpdates já
chama o Commit automaticamente. Mas ao seu ver, isso está correto? Pode
gerar algum erro?

Notei também que você prefere não utilizar as triggers. Ao meu ver, elas
facilitam o trabalho, pois executam ações conforme as mudanças nas tabelas
acontecem, como você já sabe. Eu utilizo as triggers para lançamento de
comissões, lançamento de valores no caixa e controle de estoque. Você
conhece uma forma mais interessante de realizar essas ações fora a parte os
triggers, principalmente no que diz respeito ao controle de estoque?

Obrigado a todos pela atenção.


Em 29 de agosto de 2012 20:34, Carlos H. Cantu <listas em warmboot.com.br>escreveu:

> Você poderia usar a TraceAPI pra registrar tudo que aconteceu no banco
> de dados e assim saber o que pode estar causando o "sumiço" das
> coisas, mas ela não está disponível no FB 1.5
>
> Nesse caso, experimente o FBScanner. Ele tem a capacidade de logar
> toda a comunicação entre cliente e servidor, e funciona com todas as
> versões do Firebird.
>
> []s
> Carlos H. Cantu
> www.FireBase.com.br - www.firebirdnews.org
> www.warmboot.com.br - blog.firebase.com.br
>
> EPP> Bom dia! Meus caros, em tem ocorrido alguns acontecimentos
> inusitados. Ex:
> EPP> o sistema está funcionando normalmente e, de repente, somente as
> saídas da
> EPP> tabela caixa são excluídas (todas as saídas), fazendo com que o saldo
> atual
> EPP> fique com um valor absurdo. Isso acontecia raras vezes, mas agora em
> um
> EPP> cliente especificamente está acontecendo em média uma ou duas vezes
> por
> EPP> mês, de forma que temos que restaurar o backup do dia anterior, o que
> EPP> logicamente é um certo incômodo, pois é necessário redigitar todo o
> EPP> movimento do dia.
> EPP> O sistema é desenvolvido em Delphi 7 com DBExpress e utiliza o
> Firebird
> EPP> 1.5. No banco de dados, há procedures e triggers que fazem o
> lançamento
> EPP> automático das entradas no caixa quando as vendas são encerradas.
> EPP> Tenho duas suspeitas principais: vírus que corrompe o executável ou o
> EPP> switch com problemas, mas não sei explicar cientificamente o motivo.
> EPP> Somente desconfio porque quando isso aconteceu os computadores
> estavam com
> EPP> alguns vírus e o servidor estava com problemas e reiniciando ou
> saindo da
> EPP> rede automaticamente.
>
> EPP> Gostaria de saber a opinião de vocês, segundo suas experiências.
>
> EPP> Obrigado.
>
>
> ______________________________________________
> FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
> Para saber como gerenciar/excluir seu cadastro na lista, use:
> http://www.firebase.com.br/fb/artigo.php?id=1107
> Para consultar mensagens antigas: http://firebase.com.br/pesquisa
>



Mais detalhes sobre a lista de discussão lista