[firebase-br] Posso executar EXECUTE BLOCK com componenteClientDataSet?

Rubem Nascimento da Rocha djpardalrocha em hotmail.com
Qua Dez 27 15:18:13 -03 2006


Será que não precisa daquela jogada com SET TERM pra poder usar isso daí? 
Experimentou isso? Eu não uso o FireBird 2.0, por isso estou apenas 
deduzindo. Sds.

>From: "Paulo Geloramo" <paulogeloramo em terra.com.br>
>Reply-To: FireBase <lista em firebase.com.br>
>To: "Lista Firebird" <Lista em firebase.com.br>
>Subject: [firebase-br] Posso executar EXECUTE BLOCK com 
>componenteClientDataSet?
>Date: Wed, 27 Dec 2006 15:16:12 -0200
>
>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';
>______________________________________________
>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

_________________________________________________________________
MSN Busca: fácil, rápido, direto ao ponto.  http://search.msn.com.br





Mais detalhes sobre a lista de discussão lista