[firebase-br] ajuda com stored procedure

Anderson Miranda Barrozo andersonpaduarj em gmail.com
Sáb Maio 9 17:51:09 -03 2009


Boa tarde,

        Qual foi a solução.

Anderson Miranda

2009/5/8 Reijanio Nunes Ribeiro <rnribeiro em gmail.com>

> obrigado a todos, consegui resolver
>
> 2009/5/7 Anderson Miranda Barrozo <andersonpaduarj em gmail.com>
>
> > Boa noite Reijaneio,
> >
> >        Não sei se com essas orientações resolveu, mas lembra que ontem te
> > comentei. Independente de tudo vc debugou aplicação para verificar se no
> > laço esta passando pelo numero que registro que seria o correto, ou seja,
> > se
> > tem 5 registro tá dando 5 loop ?
> >
> > Anderson Miranda
> >
> > 2009/5/7 Sandro Souza <escovadordebits em gmail.com>
> >
> > > Bom dia/tarde Reijanio.
> > >
> > > Grande Reijanio, acredito que o código UPDATE que está nessa stored
> > > procedure necessite de um pequeno ajuste.
> > >
> > > O SELECT verifica se já existe um registro na tabela de ESTOQUE com o
> > > código
> > > do produto e do local informados, mas se já constar, você não está
> apenas
> > > atualizando a quantidade disponível daquele mesmo registro, o UPDATE
> como
> > > está ali, está trocando o código do local de todos os registros que
> > tenham
> > > o
> > > mesmo código de produto, assim como atualizando as quantidades
> > disponíveis
> > > de todos eles.
> > >
> > > Tente substituir apenas aquele código UPDATE, desse:
> > >
> > > UPDATE ESTOQUE
> > > SET
> > > COD_LOCAL = :COD_LOCAL,
> > > QTDE_DISP = QTDE_DISP +:QTDE_DISP
> > > WHERE (CODPROD =:CODPROD);
> > >
> > > Para esse:
> > >
> > > UPDATE ESTOQUE SET
> > >   QTDE_DISP = QTDE_DISP +:QTDE_DISP
> > > WHERE
> > >  (CODPROD =:CODPROD)AND
> > >  (COD_LOCAL = :COD_LOCAL);
> > >
> > > Dessa nova forma, apenas aquele exato registro que já existe com o
> código
> > > de
> > > produto e local informados será atualizado, e não mais todos os outros
> > > registros do mesmo produto.
> > >
> > > Espero ter ajudado mais que atrapalhado. :D
> > >
> > > 2009/5/7 Reijanio Nunes Ribeiro <rnribeiro em gmail.com>
> > >
> > > > bom dia a todos estou com um pequeno problema e gostaria de sua ajuda
> > > > tenho a seguinte sp e funciona sem problemas pra um item so mais qdo
> é
> > > mais
> > > > de um item fica meio dificil gostaria da ajuda de vc's, ficarei grato
> > se
> > > > puderem ajudar
> > > >
> > > > a sintaxe é a seguinte
> > > >
> > > > SET TERM ^ ;
> > > >
> > > > CREATE PROCEDURE UPD_INS_ESTOQUE (
> > > >    codprod varchar(18),
> > > >    cod_local char(3),
> > > >    qtde_disp numeric(10,2))
> > > > as
> > > > BEGIN
> > > > if (EXISTS(SELECT CODPROD FROM ESTOQUE WHERE(CODPROD = :CODPROD)AND
> > > > (COD_LOCAL = :COD_LOCAL))) then
> > > > UPDATE ESTOQUE
> > > > SET
> > > > COD_LOCAL = :COD_LOCAL,
> > > > QTDE_DISP = QTDE_DISP +:QTDE_DISP
> > > > WHERE (CODPROD =:CODPROD);
> > > > ELSE
> > > > INSERT INTO ESTOQUE(
> > > > CODPROD,
> > > > COD_LOCAL,
> > > > QTDE_DISP)
> > > > VALUES
> > > > (
> > > > :CODPROD,
> > > > :COD_LOCAL,
> > > > :QTDE_DISP);
> > > > END^
> > > >
> > > > SET TERM ; ^
> > > >
> > > >
> > > > e a chamda nessa procedure é feita assim nela tem um laço no dataset
> > > > temporário que antes funcionava bem usando uma senteça sel update,
> mais
> > > com
> > > > a sp n ta funcionando
> > > >
> > > > procedure TF_Mov_Estoq.atlz_estoque;
> > > > begin
> > > > if rbmov.Value = 'E' then
> > > > begin
> > > >
> > > >    while not (cds_m_stoq.Eof) do //Cds_m_stoq = clientdataset
> > temporário
> > > >    begin
> > > >    sp_up_ins.Params[0].AsString := Cds_M_StoqCODPROD.AsString;
> > > >    sp_up_ins.params[1].AsString := Dbedit2.Field.AsString;
> > > >    sp_up_ins.params[2].AsFMTBCD := cds_M_StoqQTDE.AsBCD;
> > > >    sp_up_ins.execproc;
> > > >    cds_m_stoq.Next;
> > > >    f_dmm.Estoque.Close;
> > > >  f_dmm.Estoque.Open;
> > > >
> > > >    end;
> > > > se tirar o laço funciona mais so pra um item o que seria melhor nesse
> > > caso
> > > > colocar uma trigger pra chamar essa sp, não sei poderiam me ajudar
> > > > ______________________________________________
> > > > 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
> > >
> >
> >
> >
> > --
> >
> >
> --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
> > AS Informática
> > Anderson Miranda Barrozo
> > (22) 8115-8761
> > MSN: andersonpaduarj em hotmail.com
> > ______________________________________________
> > 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
>



-- 
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
AS Informática
Anderson Miranda Barrozo
(22) 8115-8761
MSN: andersonpaduarj em hotmail.com



Mais detalhes sobre a lista de discussão lista