[firebase-br] ajuda com stored procedure

Reijanio Nunes Ribeiro rnribeiro em gmail.com
Sex Maio 8 08:24:41 -03 2009


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
>



Mais detalhes sobre a lista de discussão lista