[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