vc sabe que as datas em SQL são no formato (yyyy/MM/dd)?
e que ficam entre aspas?

tipo: '2008/12/31'

veja se tem algo a ver com isso!
Jean Barreiros
Programador/Web-Designer
Delphi, C++, PHP, JavaScript
FireBird/InterBase, MySql, SQLServer, PostGree, Oracle
msn: [EMAIL PROTECTED]
e-mail: [EMAIL PROTECTED] 



----- Mensagem original ----
De: Darkzad <[EMAIL PROTECTED]>
Para: delphi-br@yahoogrupos.com.br; [EMAIL PROTECTED]
Enviadas: Terça-feira, 21 de Outubro de 2008 17:33:33
Assunto: [delphi-br] Problema com Store Procedure




Olá Pessoal,

A Procedure abaixo está dando o seguinte erro:

Overflow occurred during data type conversion.
conversion error from string "1968".
At procedure 'DEVOLUCAO_DIR' .

Acho que o problema é a :DTINI01 e a :DTINI02

Não sei o que mais fazer.

Desde já agradeço

CREATE OR ALTER PROCEDURE DEVOLUCAO_DIR (
dtini01 date,
dtfim01 date,
cod_ven integer,
cod_pro integer,
fabrica char(1),
tp char(1),
dtfim02 date,
ano smallint)
returns (
razao varchar(50),
jan float,
fev float,
mar float,
abr float,
mai float,
jun float,
jul float,
ago float,
seb float,
out float,
nov float,
dez float,
janm float,
fevm float,
marm float,
abrm float,
totcompr float,
totmedia float,
totdevol float,
percentu float)
as
declare variable vend integer;
declare variable qtde float;
declare variable mes smallint;
declare variable codc integer;
declare variable tipo varchar(15);
declare variable codsql1 varchar(1030) ;
declare variable codsql2 varchar(1030) ;
begin
CODSQL1 = 'Select TBCLIENTE.COD_ CLIENTE, Extract(Month From DTDOC) AS 
MES,SUM(QTDE) AS QTDE From TBNFISCAL,
TBNFMOV,TBCLIENTE Where TBNFISCAL.NRLAN = TBNFMOV.NRLAN AND
TBNFISCAL.DTDOC Between CAST('||:DTINI01| |' as DATE) AND CAST('||:DTFIM01| |' 
as DATE) AND TBNFISCAL.TDOC = ''ANL''';
if (COD_VEN > 0) then
CODSQL1 = CODSQL1 ||' AND TBCLIENTE.COD_ VEND = CAST('|| :COD_VEN ||' as 
integer) AND TBNFISCAL.COD_ CLIENTE = TBCLIENTE.COD_ CLIENTE';
else
CODSQL1 = CODSQL1 ||' AND TBNFISCAL..COD_ CLIENTE = TBCLIENTE.COD_ CLIENTE';

if (COD_PRO > 0) then
CODSQL1 = CODSQL1 ||' TBNFMOV.COD_ PRO = CAST('|| :COD_PRO ||' as integer)';

CODSQL1 = CODSQL1 ||' Group By TBCLIENTE.COD_ CLIENTE,2
Order By TBCLIENTE.COD_ CLIENTE,2' ;

FOR EXECUTE STATEMENT
CODSQL1
Into :VEND, :MES, :QTDE
Do
begin
if (MES = 1) then
begin
JAN = QTDE;
Select Sum(QTDE) /12 From TBNFISCAL,TBNFMOV, TBPRODUTO Where TBNFISCAL.NRLAN = 
TBNFMOV.NRLAN AND
TBPRODUTO.COD_ PRO = TBNFMOV.COD_ PRO AND
Extract(Month from DTDOC) >= 1 AND DTDOC <= :DTFIM02 AND Extract(YEAR from 
DTDOC) = :ANO
AND TBNFISCAL.TDOC = 'VEN' AND TBPRODUTO.TPROD = 'BATERIA'
into :JANM;
end
else if (MES = 2) then
begin
FEV = QTDE;
Select Sum(QTDE) /12 From TBNFISCAL,TBNFMOV, TBPRODUTO Where TBNFISCAL.NRLAN = 
TBNFMOV.NRLAN AND
TBPRODUTO.COD_ PRO = TBNFMOV.COD_ PRO AND
Extract(Month from DTDOC) >= 2 AND DTDOC <= :DTFIM02 AND Extract(YEAR from 
DTDOC) = :ANO
and TBNFISCAL.TDOC = 'VEN' AND TBPRODUTO.TPROD = 'BATERIA'
into :FEVM;
end
else if (MES = 3) then
begin
MAR = QTDE;
Select Sum(QTDE) /12 From TBNFISCAL,TBNFMOV, TBPRODUTO Where TBNFISCAL.NRLAN = 
TBNFMOV.NRLAN AND
TBPRODUTO.COD_ PRO = TBNFMOV..COD_ PRO AND
Extract(Month from DTDOC) >= 3 AND DTDOC <= :DTFIM02 AND Extract(YEAR from 
DTDOC) = :ANO
and TBNFISCAL.TDOC = 'VEN' AND TBPRODUTO.TPROD = 'BATERIA'
into :MARM;
end
else if (MES = 4) then
begin
ABR = QTDE;
Select Sum(QTDE) /12 From TBNFISCAL,TBNFMOV, TBPRODUTO Where TBNFISCAL.NRLAN = 
TBNFMOV.NRLAN AND
TBPRODUTO.COD_ PRO = TBNFMOV.COD_ PRO AND
Extract(Month from DTDOC) >= 4 AND DTDOC <= :DTFIM02 AND Extract(YEAR from 
DTDOC) = :ANO
and TBNFISCAL.TDOC = 'VEN' AND TBPRODUTO.TPROD = 'BATERIA'
into :ABRM;
end
else if (MES = 5) then
begin
MAI = QTDE;
Select Sum(QTDE) /12 From TBNFISCAL,TBNFMOV, TBPRODUTO Where TBNFISCAL.NRLAN = 
TBNFMOV.NRLAN AND
TBPRODUTO.COD_ PRO = TBNFMOV.COD_ PRO AND
Extract(Month from DTDOC) >= 5 AND DTDOC <= :DTFIM02 AND Extract(YEAR from 
DTDOC) = :ANO
and TBNFISCAL.TDOC = 'VEN' AND TBPRODUTO.TPROD = 'BATERIA'
into :MAIM;
end
else if (MES = 6) then
JUN = QTDE;
else if (MES = 7) then
JUL = QTDE;
else if (MES = 8) then
AGO = QTDE;
else if (MES = 9) then
SEB = QTDE;
else if (MES = 10) then
OUT = QTDE;
else if (MES = 11) then
NOV = QTDE;
else if (MES = 12) then
DEZ = QTDE;
end

end^

SET TERM ; ^

[As partes desta mensagem que não continham texto foram removidas]

 


      Novos endereços, o Yahoo! que você conhece. Crie um email novo com a sua 
cara @ymail.com ou @rocketmail.com.
http://br.new.mail.yahoo.com/addresses

[As partes desta mensagem que não continham texto foram removidas]

Responder a