[firebase-br] for execute statement...

Luciano Carneiro luciano em praticsistemas.com.br
Qui Nov 18 07:27:42 -03 2004


Amigos,
Tenho um comando de "for select" com dados variáveis e gostaria de faze-lo através de um
"for execute statement" mas encontrei dificuldades para faze-lo funcionar.
O comando é:

wsql = 'select movdat, movdeb, movccd, movcre, movccc, hiscod, movcpl, movvlr, movseq from ' || :wtab ||
          ' where empcod = ' || :empi || ' and movdat between ' || :dati || ' and ' ||
          :datf || ' and (((movdeb = ' || :wpct || ') and (movccd = ' || :wcen ||
          ')) or ((movcre = ' || :wpct || ') and (movccc = ' || :wcen || ')))' ||
          ' order by movdat, movseq';

...  e em seguida: 

for execute statement :wsql into :wdat, :wdeb, :wccd, :wcre, :wccc, :wchi, :wcpl, :wvlr, :wsqm
     do begin

As variáveis são: 
WTAB VARCHAR(10) é o nome de uma tabela  = "movimento"
EMPI  VARCHAR(4)   = "0132"
DATI  e DATF são  DATE = 01/01/2004 e 31/01/2004 passados por parâmetros mas quando
                            são convertidas ficam como 2004-01-01 e 2004-01-31
WPCT VARCHAR(16) = "111010001"
WCEN SMALLINT   = de 1 até 3

Os campos com os quais são comparados são da mesma natureza das variáveis de trabalho
O sistema apresenta o erro:

GDS Exception. 335544334. conversion error from string "1972"

Penso que o erro é na data.
Se executar o comando conforme abaixo funciona normal:

for select movdat, movdeb, movccd, movcre, movccc, hiscod, movcpl, movvlr, movseq from movimento
    where empcod = :empi and movdat between :dati and :datf and 
    (((movdeb = :wpct) and (movccd = :wcen)) or ((movcre = :wpct) and (movccc = :wcen)))
    order by movdat, movseq'
do begin...

Agradeço sinceramente alguma ajuda.

Luciano C Santos



Mais detalhes sobre a lista de discussão lista