Fórum conversion error from string quot;URGENTEquot; #60196

25/09/2008

0

Meus caros.

Estou com uma procedure dando o seguinte erro:

ISC ERROR CODE:335544334

ISC ERROR MESSAGE:
conversion error from string ´99.999.999/9999-99´
At procedure ´GERA_PEDIDO_DE_COMPRA´

STATEMENT:
TIBOInternalDataset: ´<TApplication>.frmStoredProcedure.qryResults.IBOqrqryResults.´

Até o presente momento não consegui ainda resolver, espero poder contar com os amigos.

Por gentileza se algum colega puder me ajudar o quanto antes possivel eu agradeço.

Obrigado.


N_informatica

N_informatica

Responder

Posts

25/09/2008

Ant.carlos/sp

Olá!
Amigo, por favor insira aki a rotina da sua procedure, só analizando pra ver o q esta errado.

100+

ANT.CARLOS/SP


Responder

Gostei + 0

25/09/2008

N_informatica

COMMIT WORK;
SET AUTODDL OFF;
SET TERM ^ ;

/* Stored procedures */

CREATE PROCEDURE ´GERA_PEDIDO_DE_COMPRA´
(
´PEMPRESA´ VARCHAR(18),
´PFILIAL´ VARCHAR(18),
´PNUMERO´ INTEGER
)
AS
BEGIN EXIT; END ^


ALTER PROCEDURE ´GERA_PEDIDO_DE_COMPRA´
(
´PEMPRESA´ VARCHAR(18),
´PFILIAL´ VARCHAR(18),
´PNUMERO´ INTEGER
)
AS
declare variable vempresa varchar(18);
declare variable vfilial varchar(18);
declare variable vnumero integer;
declare variable vcodigofor integer;
declare variable vfornecedor varchar(18);
declare variable vitem integer;
declare variable vnome_fornecedor varchar(50);
declare variable vcodigoprd integer;
declare variable vproduto varchar(50);
declare variable vpreco_unit double precision;
declare variable vquantidade double precision;
declare variable vpreco_total double precision;
declare variable vperc_icms double precision;
declare variable vvalor_icms double precision;
declare variable vperc_ipi double precision;
declare variable vvalor_ipi double precision;
declare variable vperc_desconto double precision;
declare variable vvalor_desconto double precision;
declare variable vperc_despesa double precision;
declare variable vvalor_despesa double precision;
declare variable vpreco_liquido double precision;
declare variable vdataentrega timestamp;
declare variable vespecifica varchar(80);
declare variable vdata timestamp;
declare variable vlocaldeent varchar(60);
declare variable vendcobranca varchar(90);
declare variable vmoeda varchar(5);
declare variable vobservacao blob sub_type 1 segment size 80;
declare variable vdepartamento varchar(2);
declare variable vndepartamento varchar(40);
declare variable vsetor varchar(2);
declare variable vnsetor varchar(40);
declare variable vaplicacao varchar(6);
declare variable vnaplicacao varchar(40);
BEGIN
FOR SELECT P.EMPRESA, P.FILIAL, P.NUMERO, P.CODIGOFOR, P.FORNECEDOR, P.ITEM,
F.NOME_FORNECEDOR, P.CODIGOPRD, P.PRODUTO, P.PRECO_UNIT, P.QUANTIDADE,
P.PRECO_TOTAL, P.PERC_ICMS, P.VALOR_ICMS, P.PERC_IPI, P.VALOR_IPI,
P.PERC_DESCONTO, P.VALOR_DESCONTO, P.PERC_DESPESA, P.VALOR_DESPESA,
P.PRECO_LIQUIDO, P.DATAENTREGA, P.ESPECIFICA, C.DATA, C.LOCALDEENT,
C.ENDCOBRANCA, C.MOEDA, C.OBSERVACAO, I.DEPARTAMENTO, I.NDEPARTAMENTO,
I.SETOR, I.NSETOR, I.APLICACAO, I.NAPLICACAO
FROM PRECOS P, FOR_COTA F, COTA C, IT_COTA I
WHERE P.EMPRESA = :PEMPRESA
AND P.FILIAL = :PFILIAL
AND P.NUMERO = :PNUMERO
AND F.EMPRESA = P.EMPRESA
AND F.FILIAL = P.FILIAL
AND F.NUMERO = P.NUMERO
AND F.CODIGOFOR = P.CODIGOFOR
AND F.FORNECEDOR = P.FORNECEDOR
AND C.EMPRESA = P.EMPRESA
AND C.FILIAL = P.FILIAL
AND C.NUMERO = P.NUMERO
AND I.EMPRESA = P.EMPRESA
AND I.FILIAL = P.FILIAL
AND I.NUMERO = P.NUMERO
AND I.CODIGOPRD = P.CODIGOPRD
AND P.STATUS = ´T´
ORDER BY 1, 2, 3, 4, 5, 6
INTO :vEMPRESA, :vFILIAL, :vNUMERO, :vCODIGOFOR, :vFORNECEDOR, :vITEM,
:vNOME_FORNECEDOR, :vCODIGOPRD, :vPRODUTO, :vPRECO_UNIT, :vQUANTIDADE,
:vPRECO_TOTAL, :vPERC_ICMS, :vVALOR_ICMS, :vPERC_IPI, :vVALOR_IPI,
:vPERC_DESCONTO, :vVALOR_DESCONTO, :vPERC_DESPESA, :vVALOR_DESPESA,
:vPRECO_LIQUIDO, :vDATAENTREGA, :vESPECIFICA, :vDATA, :vLOCALDEENT,
:vENDCOBRANCA, :vMOEDA, :vOBSERVACAO, :vDEPARTAMENTO, :vNDEPARTAMENTO,
:vSETOR, :vNSETOR, :vAPLICACAO, :vNAPLICACAO
DO
BEGIN
IF (NOT EXISTS(SELECT * FROM ODC
WHERE EMPRESA = :PEMPRESA
AND FILIAL = :PFILIAL
AND COTACAO = :PNUMERO
AND CODIGOFOR = :vCODIGOFOR
AND FORNECEDOR = :vFORNECEDOR)) THEN
BEGIN
INSERT INTO ODC VALUES (:PEMPRESA, :PFILIAL, 0, :vCODIGOFOR, :vFORNECEDOR,
:vDATA, :PNUMERO, :vLOCALDEENT, :vENDCOBRANCA,
:vNOME_FORNECEDOR, ´´, ´´, :vMOEDA,
:vOBSERVACAO, ´ENVIAR´, CURRENT_DATE, USER);
END
SELECT MAX(NUMERO)
FROM ODC
WHERE EMPRESA = :PEMPRESA
AND FILIAL = :PFILIAL INTO :vNUMERO;
IF (NOT EXISTS(SELECT * FROM I_ODC
WHERE EMPRESA = :PEMPRESA
AND FILIAL = :PFILIAL
AND NUMERO = :vNUMERO
AND ITEM = :vITEM
AND CODIGOFOR = :vCODIGOFOR
AND FORNECEDOR = :vFORNECEDOR
AND CODIGOPRD = :vCODIGOPRD)) THEN
BEGIN
INSERT INTO I_ODC VALUES(:PEMPRESA, :PFILIAL, :vNUMERO, :vCODIGOFOR,
:vFORNECEDOR, :vITEM, :vNOME_FORNECEDOR,
:vCODIGOPRD, :vPRODUTO, :vPRECO_UNIT, :vQUANTIDADE,
:vPRECO_TOTAL, :vPERC_ICMS, :vVALOR_ICMS, :vPERC_IPI,
:vVALOR_IPI, :vPERC_DESCONTO, :vVALOR_DESCONTO,
:vPERC_DESPESA, :vVALOR_DESPESA, :vPRECO_LIQUIDO,
:vDATAENTREGA, :vESPECIFICA, :vDEPARTAMENTO,
:vNDEPARTAMENTO, :vSETOR, :vNSETOR, :vAPLICACAO,
:vNAPLICACAO, ´ENVIAR´, CURRENT_DATE, USER);
END
END
END
^

SET TERM ; ^
COMMIT WORK;
SET AUTODDL ON;


Responder

Gostei + 0

25/09/2008

Emerson Nascimento

ao que parece você está tentanto gravar aquela string num campo não string. como vocÊ não publicou a estrutura das tabelas envolvidas, fica dificil analisar.

te dou uma dica:
não use
INSERT INTO XXX VALUES (lista de valores)
dessa forma, se houve alguma alteração nas posições dos campos ou a inclusão de um campos na tabela, você terá um erro na execução do insert.

prefira usar:
INSERT INTO XXX (lista de campos) VALUES (lista de valores)
assim você garante que está inserindo os valores nos campos corretos.


Responder

Gostei + 0

26/09/2008

N_informatica

Muito estranho mas foi o que resolveu o problema.

Primeiramente quero agradecer a costumeira cooperação de todos vcs.

Bom foi o seguinte, fiz como o Emerson falou, mudei o insert passando antes dos valores a lista com os campos mas ainda assim o problema persistiu, foi ai que percebie que como o select era composto de mais de uma tabela e em uma outra tinha a mesma informação que estava dando problema então substitui o campo de uma tabela pelo da outra e pronto.

Obrigado a todos mais uma vez.

Até uma próxima.


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar