[firebase-br] RES: Firebird IBO ou Programador com erro

Felix - Sol felix.sol em terra.com.br
Qua Maio 26 18:21:08 -03 2010


Mude para trigger. Recomendadissimo. Pode dar um trabalho a mais agora, mas
vai te poupar de imensas dores de cabeça.


Fco. Felix
Desenvolvimento de Sistemas
www.soltecnologia.com.br
-----Mensagem original-----
De: lista-bounces em firebase.com.br [mailto:lista-bounces em firebase.com.br] Em
nome de Eduardo Pombo
Enviada em: quarta-feira, 26 de maio de 2010 17:22
Para: FireBase
Assunto: Re: [firebase-br] Firebird IBO ou Programador com erro

Acredito que o ocorrido tenha sido algo que a trigger realmente
impediria. O provavel neste caso seja que tenha acontecido de duas
vendas no mesmo momento pegando dados da mesma venda anterior pq a
segunda deva estar na hora em transacao aberta e por isso nao visivel
para a outra venda.

Solucao recomendada: reduzir ao maximo o tempo de transacao deixando
para abrir a transacao apenas no momento da gravacao e/ou claro a
criacao de uma trigger como citado pelo Alysson



2010/5/26 Alysson Azevedo <agalysson em gmail.com>:
> ja pensou na ideia de preencher o estoque anterior e o estoque atual
atravez
> de uma trigger?
> acho difissilimo ter esse tipo de problema se for com trigger... (só num
> garanto que seja impossivel)
> --
>
> Alysson Gonçalves de Azevedo
> (11) 8491-7730
>
> (\(''^_^ )/)
>
> "Pobre vive dizendo que não tem nada, mas quando vem a enchente, ele sai
> gritando: -Perdi tudo!!!"
>
>
>
>
> 2010/5/26 Marcio Alves de Almeida <net.marcio em gmail.com>
>
>> Tenho um sistema vendas rodado depois de fazer o pedido um cliente
>> vai ateh um caixa pagar e nesse momento
>> eh dado a baixa no estoque acontece essa semana em uma venda na hora
>> da baixa do estoque aconteceu algo estranho tenho uma tabela aparte
>> que guarda as movimentacoes dos produto tipo UltimoEstroque  a
>> quantidade de saida e Saldo depois da venda
>> tipo Assim
>> Cod   UltimoEstoque      Saida     EstoqueAtual    Hora cod_venda
>> 1        500                       10           490          07:10:10
>>     255551
>> 1        490                       10           480          07:10:15
>>     255555
>> 1        480                       20           460          07:10:22
>>     255569
>>
>>
>> acontece que em um determinada venda 1 produto foi dar baixa ao
>> mesmo tempo e aconteceu isso
>> 1        401                       1            400          09:10:01
>>      255571
>>
>> 1        400                       1            399          09:10:22
>>      255902
>> 1        400                       1            399          09:10:22
>>      255940
>>
>> ele deveria ficar assim
>>
>> 1        399                       1            398          09:10:22
>>      255940
>>
>> Delphi 7 IBO 4.7.16  Firebird 2.0
>> alguem tem uma luz sobre isso o que eu poderia fazer para nao
>> acontecer isso
>> uma vez que no tabela produtos nao deu baixa no estoque isso nao pode
>> acontecer.
>>
>>        If Q_Produto.RecordCount > 0 Then
>>        Begin
>>         Modulo.Q_MovSaida.Append;
>>         Modulo.Q_MovSaidaCod_Venda.Value        :=
>> Modulo.Q_VendaCod_Venda.Value;
>>         //*******************************************
>>         Modulo.Q_MovSaidaVen_NumNota.Value      :=
>> Modulo.Q_VendaVen_NumNota.Value;
>>         Modulo.Q_MovSaidaCod_Marca.Value        :=
>> Q_ItemVendaCod_Marca.Value;
>>         //*******************************************
>>         Modulo.Q_MovSaidaCod_ItemVenda.Value    :=
>> Q_ItemVendaCod_ItemVenda.Value;
>>         Modulo.Q_MovSaidaCod_Produto.Value      :=
>> Q_ItemVendaCod_Produto.Value;
>>         Modulo.Q_MovSaidaCod_Grupo.Value        :=
>> Q_ItemVendaItem_Cod_Grupo.Value;
>>         Modulo.Q_MovSaidaCod_vendedor.Value     :=
>> Modulo.Q_VendaCod_Funcionario.Value;
>>         Modulo.Q_MovSaidaCod_Caixa.Value        :=
>> Modulo.Q_VendaCod_Caixa_Funcionario.Value;
>>         Modulo.Q_MovSaidaNumeroNota.Value       :=
>> Modulo.Q_VendaVen_NumNota.Value;
>>         Modulo.Q_MovSaidaSaida_Estorno.Value    := 'Venda';
>>         Modulo.Q_MovSaidaData.Value             :=
>> Modulo.MemoriaDataServer.Value;
>>         Modulo.Q_MovSaidaPrecoUnit.Value        :=
>> Q_ItemVendaItem_VlrVenda.Value;
>>         Modulo.Q_MovSaidaQuantidade.Value       :=
>> Q_ItemVendaItem_QtddVenda.Value;
>>         Modulo.Q_MovSaidaHora.Value             := Now;
>>         Modulo.Q_MovSaidaValorTotal.Value       :=
>> Q_ItemVendaItem_Total.Value;
>>         Modulo.Q_MovSaidaCod_Fecha_Nota.Value   :=
>> Modulo.Q_Fecha_NotaCod_Fecha_Nota.Value;
>>         Modulo.Q_MovSaidaEstoqueAnterior.Value  :=
>> Q_ProdutoPro_Quantidade.Value;
>>         Modulo.Q_MovSaidaEstoqueAtual.Value     :=
>> Q_ProdutoPro_Quantidade.Value - Q_ItemVendaItem_QtddVenda.Value;
>>         Modulo.Q_MovSaida.Post;
>>
>>         Q_Produto.Edit;
>>         Q_ProdutoPro_Quantidade.Value          :=
>> Q_ProdutoPro_Quantidade.Value - Q_ItemVendaItem_QtddVenda.Value;
>>         Q_ProdutoPro_DtUltimaVenda.Value       :=
>> Modulo.MemoriaDataServer.Value;
>>         Q_Produto.Post;
>>        end;
>>
>> ______________________________________________
>> 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
>>
> ______________________________________________
> 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
>



-- 

Atenciosamente

José Eduardo Pombo de Barros
Gerente de Manutenção de Sistemas

______________________________________________
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