Fórum Procedure nao esta retornando o valor #240406
29/06/2004
0
Bom estou usando Firebird 1.5 criei uma procedure da seguinte forma:
=============================================
CREATE PROCEDURE PROC_SOMAITEM (
NOTA_NUMERO INTEGER,
NOTA_DATA DATE)
RETURNS (
VALOR_TOTITEM DOUBLE PRECISION)
AS
BEGIN
SELECT SUM(ITEM_QTDE * ITEM_VALUNIT) as valor_totitem FROM nfa_itemnota
WHERE NOTA_NUMERO = :nota_numero and NOTA_DATA = :nota_data
INTO :valor_totitem;
EXIT;
END
=============================================
blz, testei passando parametros no IBEXPERT, deu o resultado que eu queria, funcionou blz...,mas...
qdo. vou para o delphi faço o seguinte:
=============================================
SQLProc1.Prepared:=True;
try
SQLProc1.Params[0].AsInteger:= StrToInt(FlatEdit1.Text);
SQLProc1.Params[1].AsDateTime:= StrToDateTime(FlatMaskEdit1.Text);
SQLProc1.ExecProc;
FlatSpinEditFloat1.Value:=SQLProc1.Params[2].AsFloat;
finally
SQLProc1.Prepared:=False;
end;
=============================================
simplesmente, nao acontece nada, nao tem resultado de nada..., o que pode estar acontecendo, meus amigos e minhas amigas de desenvolvimento...
Duarteol
Curtir tópico
+ 0Posts
30/06/2004
Everton
============================================= CREATE PROCEDURE PROC_SOMAITEM ( NOTA_NUMERO INTEGER, NOTA_DATA DATE) RETURNS ( VALOR_TOTITEM DOUBLE PRECISION) AS BEGIN SELECT SUM(ITEM_QTDE * ITEM_VALUNIT) as valor_totitem FROM nfa_itemnota WHERE NOTA_NUMERO = :nota_numero and NOTA_DATA = :nota_data INTO :valor_totitem; /* EXIT; <<<<<<<------ Substitua pela linha abaixo */ SUSPEND; END =============================================
Gostei + 0
30/06/2004
Duarteol
Gostei + 0
01/07/2004
Emerson Nascimento
faça um teste:
instancie um componente SQLDataSet ao invés de SQLProc. na instrução coloque ´Select * from PROC_SOMAITEM( :Nota, :Data )´.
depois faça:
SQLDataset.ParamByName(´Nota´).AsInteger := StrToInt(FlatEdit1.Text);
SQLDataset.ParamByName(´Data´).AsDateTime := StrToDateTime(FlatMaskEdit1.Text);
SQLDataset.Open;
FlatSpinEditFloat1.Value := SQLDataset.FieldByName(´VALOR_TOTITEM´).AsFloat;
acho que é isso...
Gostei + 0
01/07/2004
Duarteol
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)