[firebase-br] Posso executar EXECUTE BLOCK com componente ClientDataSet?
Paulo Geloramo
paulogeloramo em terra.com.br
Qua Dez 27 15:16:12 -03 2006
Posso chamar o EXECUTE BLOCK atraves do componente ClientDataSet
conforme abaixo?
Pois se executo o EXECUTE BLOCK no IBExpert funciona, mas chamando
conforme abaixo apresenta a mensagem de erro abaixo:
Select := 'EXECUTE BLOCK (ID_PRODUTO INTEGER = :ID_PRODUTO) ';
Select := Select + 'RETURNS ( ';
...
Select := Select + 'END';
Neste ponto copio a variavel Select e executo no IBExpert com sucesso.
ClientDataSet1.Close;
ClientDataSet1.CommandText := Select;
ClientDataSet1.Params.ParamByName('ID_PRODUTO').AsInteger := dmA.cdsSaldo.FieldByName('ID_PRODUTO').AsInteger;
ClientDataSet1.Open;
---------------------------
Teste
---------------------------
Erro no servidor: Token unknown - line 1, column 291
?.
---------------------------
OK
---------------------------
segue abaixo o Select na integra:
Select := 'EXECUTE BLOCK (ID_PRODUTO INTEGER = :ID_PRODUTO) ';
Select := Select + 'RETURNS ( ';
Select := Select + 'CODIGO_PONTO INTEGER, ';
Select := Select + 'NOME_PRODUTO VARCHAR(30), ';
Select := Select + 'EDICAO_CAPA VARCHAR(6), ';
Select := Select + 'REMESSA INTEGER, ';
Select := Select + 'DEVOLUCAO INTEGER, ';
Select := Select + 'VENDA INTEGER, ';
Select := Select + 'LANCAMENTO DATE, ';
Select := Select + 'CODIGO_EDICAO INTEGER, ';
Select := Select + 'TOTAL INTEGER) ';
Select := Select + 'AS ';
Select := Select + 'BEGIN ';
Select := Select + ' FOR SELECT CODIGO_PONTO ';
Select := Select + ' FROM PONTO ';
Select := Select + ' INTO :CODIGO_PONTO DO ';
Select := Select + ' BEGIN ';
Select := Select + ' FOR SELECT FIRST ' + IntToStr(cbHistoricoRemessaDevolucaoVenda.ItemIndex) + ' P.NOME_PRODUTO, E.EDICAO_CAPA, I.REMESSA, I.DEVOLUCAO, I.VENDA, E.LANCAMENTO, E.CODIGO_EDICAO, ';
Select := Select + ' (SELECT SUM(M.REMESSA) FROM CE_PONTO_ITEM M WHERE M.ID_EDICAO = E.ID_EDICAO) AS TOTAL ';
Select := Select + ' FROM CE_PONTO_ITEM I ';
Select := Select + ' JOIN PONTO T ON (I.ID_PONTO = T.ID_PONTO) ';
Select := Select + ' JOIN EDICAO E ON (I.ID_EDICAO = E.ID_EDICAO) ';
Select := Select + ' JOIN PRODUTO P ON (E.ID_PRODUTO = P.ID_PRODUTO) ';
Select := Select + ' WHERE E.ID_PRODUTO = :ID_PRODUTO AND T.CODIGO_PONTO = :CODIGO_PONTO AND (I.REMESSA + I.DEVOLUCAO + I.VENDA > 0) ';
Select := Select + ' ORDER BY E.CODIGO_EDICAO DESC ';
Select := Select + ' INTO :NOME_PRODUTO, :EDICAO_CAPA, :REMESSA, :DEVOLUCAO, :VENDA, :LANCAMENTO, :CODIGO_EDICAO, :TOTAL DO ';
Select := Select + ' BEGIN ';
Select := Select + ' SUSPEND; ';
Select := Select + ' END ';
Select := Select + ' END ';
Select := Select + 'END';
Mais detalhes sobre a lista de discussão lista