[firebase-br] RES: Meio OFF - atualizar estoque de produtos

Fabiana Thome fabiana.thome em tan.com.br
Qua Ago 15 12:51:24 -03 2007


Reijanio,

conforme entendo a questão de triggers, você não as utiliza no Delphi. Estas
são disparadas pelo FIREBIRD quando você efetuar um INSERT, UPDATE ou DELETE
da tabela na qual as inseriu. Explicando melhor: você possui a tabela
itens_nfcompra, cria triggers para o after insert, after update e after
delete desta tabela. Assim, toda vez que você incluir um registro em
itens_nfcompra a trigger associada ao after insert será disparada.

Desta forma, no Delphi, você se preocupa em efetuar INSERT, UPDATE ou DELETE
na tabela itens_nfcompra, o restante será feito no FIREBIRD.

Assim, no exemplo do Helton, temos a trigger do after insert da tabela
itens_nfcompra:

CREATE TRIGGER "ITENSPRODUTOS_AI0" FOR "ITENSPRODUTOS
ACTIVE AFTER INSERT POSITION 0
AS
begin
/* Trigger text */
update produtos
set
   produtos.est_prod= produtos.est_prod - new.qtdevenda
WHERE
   produtos.cod_prod=new.cod_prod;
end

Quando o seu programa inserir um registro na tabela itens_nfcompra, a
trigger acima será dispara e atualizará a tabela produtos.

Você pode escolher utilizar STORED PROCEDURE, estas sim, precisam ser
disparadas no Delphi. Veja exemplo abaixo:

  td.TransactionID  := 01;
  td.IsolationLevel := xilREADCOMMITTED;

  QrFil               := TSQLStoredProc.Create(Nil);
  QrFil.NoMetadata    := True;
  QrFil.SQLConnection := usrvvars.db;

  usrvvars.db.StartTransaction(td);

  QrFil.StoredProcName:= 'PROCEDURE_SUA';

  QrFil.Params[00].AsInteger := parametro1;
  QrFil.Params[01].AsInteger := parametro2;
.... (quantos parâmetros você definiu na procedure ....
  Try
    if QrFil.ParamCheck Then
       QrFil.ExecProc;
  Except
    on e:Exception Do
    Begin
       Result := tMsgError('Mensagem');
       usrvvars.db.RollBack(td);
       Exit;
    End;
  End;

Atenciosamente.
 
Fabiana Fiorini Thomé
 
T.A.N - Tecnologia Aplicada a Negocios Ltda Rua Princesa Isabel, 238 - Salas
103 a 106 Joinville - SC CEP 89.201-904
Fones: (47) 3423-0841 - (48) 4052-8338 - (21) 3527-0475 - (51) 4063-8423
Soluções Para Proteção, Concessão, Recuperação de Créditos, Gestão e
Automação do Varejo CRA-SC Número 0969-J
 
Mérito Lojista pela CNDL em 2004
Mérito Lojista pela CNDL em 2005
 
Microsoft Registered Member
-----Mensagem original-----
De: lista-bounces em firebase.com.br [mailto:lista-bounces em firebase.com.br] Em
nome de Reijanio Nunes Ribeiro
Enviada em: quarta-feira, 15 de agosto de 2007 10:36
Para: FireBase
Assunto: Re: [firebase-br] Meio OFF - atualizar estoque de produtos

duas perguntas como implementa-los no delphi pois nunca usei triggers no
delphi e depois como ficaria a sintase sem a trigger

Em 15/08/07, Helton <heltonrn em gmail.com> escreveu:
>
> Ola Reijanio
>
> vc pode criar algumas triggers conforme o exemplo abaixo.
>
> []´s
>
>
> CREATE TRIGGER "ITENSPRODUTOS_AI0" FOR "ITENSPRODUTOS
> ACTIVE AFTER INSERT POSITION 0
> AS
> begin
> /* Trigger text */
> update produtos
> set
>    produtos.est_prod= produtos.est_prod - new.qtdevenda
> WHERE
>    produtos.cod_prod=new.cod_prod;
> end
>
>
> Em 15/08/07, Reijanio Nunes Ribeiro<rnribeiro em gmail.com> escreveu:
> > bom dia pessoal estou com um problema gostaria de poder usar uma
> sentença
> > sql pra atualizar meu estoque mais n estou conseguindo poderiam me
> ajudar
> > as tabelas são aseguinte:
> >
> > tabela de produtos
> > tabela de nfcompras
> > tabela de itens_nfcompra
> >
> > na teoria ao lançar os itens na tabela de itens da nf entaum ela
> atualizaria
> > um campo chamado Est_atu(estoque atual) na tabela de produtos mais n
> estou
> > conseguindo poderiam me dar uma ajuda
> > update produtos set est_atu = est_atu + (quantidade) where idprod =:
> idprod
> > e como fazer isso no delphi usando uma query sendo que é esse campo
> > quantidade é representado por um edit o idprod tambem e o outro idprod
> seria
> > o campo relativo a tabela dee produtos sei la podem me ajudar
> > ______________________________________________
> > FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
> > Para editar sua configuração na lista, use o endereço
> http://mail.firebase.com.br/mailman/listinfo/lista_firebase.com.br
> > Para consultar mensagens antigas: http://firebase.com.br/pesquisa
> >
>
>
> --
> Hélton R. Nunes
> heltonrn em gmail.com
>
> ______________________________________________
> FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
> Para editar sua configuração na lista, use o endereço
> http://mail.firebase.com.br/mailman/listinfo/lista_firebase.com.br
> Para consultar mensagens antigas: http://firebase.com.br/pesquisa
>
______________________________________________
FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
Para editar sua configuração na lista, use o endereço
http://mail.firebase.com.br/mailman/listinfo/lista_firebase.com.br
Para consultar mensagens antigas: http://firebase.com.br/pesquisa





Mais detalhes sobre a lista de discussão lista