[firebase-br] Problema com Firebird 2.1
Rodrigo
dominio em engeplus.com.br
Sex Nov 21 11:20:05 -03 2008
Bom dia Magno,
Tentei fazer da forma que vc me indicou e tb nao deu certo,
Nao sei a impressão que eu tenho é que o comando Replace nao existe como
comando.
Será que é isso?
A versao do firebird é 2.1.1.17910
Atenciosamente,
Rodrigo
----- Original Message -----
From: "Magno System" <magno em speet.com.br>
To: "FireBase" <lista em firebase.com.br>
Sent: Friday, November 21, 2008 11:01 AM
Subject: Re: [firebase-br] Problema com Firebird 2.1
Ao invés de:
Cast(REPLACE(VCompra,',','.')/100 as Numeric(8,2))
Tente usar:
Cast(REPLACE(VCompra,',','.') as Numeric(8,2)) / 100
----- Original Message -----
From: "Rodrigo" <dominio em engeplus.com.br>
To: "FireBase" <lista em firebase.com.br>
Sent: Friday, November 21, 2008 8:37 AM
Subject: Re: [firebase-br] Problema com Firebird 2.1
Bom dia Eduardo,
Entao provavelmente estou fazendo algo errado.
segue o codigo:
FOR
SELECT
CODIGO,CODPRODUTO,CODBARRA,PRODUTO,ESTOQUE,LUCRO,VCOMPRA,VVENDA,ESTMINIMO,UNIDADE,ICMS,TIPO,GRUPO,GRUPOI,GARANTIA,GARANTIAI,FORNECEDOR,NUMPEDIDO,NUMVENDA,GARANTIAVENDA,GARANTIAIVENDA,FRETE,DIFBALANTERIOR,VENDAOS,ACUMULATIVO,MARCA,CODBARRASLARGO,REFERENCIA,SUBGRUPO,COR,DATACOMPRA,DATAVENDA,GRUPO3,TAMANHO,EMPRESA,CODEMPRESA,VCOMPRA2,VVENDA2,LUCRO2,CODBARRA2,UNIDADE2,ESTOQUEUND,QTD,PRODABR,CONSIGNADO,VALORFRETE,VALORIPI,VALORICMS,VALORSEGURO,VALOROUTROS,IPI,CODFORNECEDOR,PRODUCAO,CODPT,DTNEGATIVO,CODPROD,VASILHAME,PROMOCAO,DESCONTO,CFOP,(Cast(REPLACE(VCompra,',','.')/100
as Numeric(8,2)) + COALESCE(ValorOutros,0) + COALESCE(ValorIPI,0) +
COALESCE(ValorSeguro,0) + COALESCE(ValorFrete,0)-
COALESCE(DESCONTO,0)),ATIVO,SUBGRUPO3 FROM PRODUTOS WHERE (TIPO='P' OR TIPO
IS NULL OR TIPO = '') AND PRODUTO LIKE :VALOR ORDER BY PRODUTO
INTO
:CODIGO,:CODPRODUTO,:CODBARRA,:PRODUTO,:ESTOQUE,:LUCRO,:VCOMPRA,:VVENDA,:ESTMINIMO,:UNIDADE,:ICMS,:TIPO,:GRUPO,:GRUPOI,:GARANTIA,:GARANTIAI,:FORNECEDOR,:NUMPEDIDO,:NUMVENDA,:GARANTIAVENDA,:GARANTIAIVENDA,:FRETE,:DIFBALANTERIOR,:VENDAOS,:ACUMULATIVO,:MARCA,:CODBARRASLARGO,:REFERENCIA,:SUBGRUPO,:COR,:DATACOMPRA,:DATAVENDA,:GRUPO3,:TAMANHO,:EMPRESA,:CODEMPRESA,:VCOMPRA2,:VVENDA2,:LUCRO2,:CODBARRA2,:UNIDADE2,:ESTOQUEUND,:QTD,:PRODABR,:CONSIGNADO,:VALORFRETE,:VALORIPI,:VALORICMS,:VALORSEGURO,:VALOROUTROS,:IPI,:CODFORNECEDOR,:PRODUCAO,:CODPT,:DTNEGATIVO,:CODPROD,:VASILHAME,:PROMOCAO,:DESCONTO,:CFOP,:CUSTO,:ATIVO,:SUBGRUPO3
DO
SUSPEND;
end
Agradeço pela ajuda,
Rodrigo
----- Original Message -----
From: "Eduardo Bahiense" <eduardo em icontroller.com.br>
To: <lista em firebase.com.br>
Sent: Friday, November 21, 2008 8:54 AM
Subject: Re: [firebase-br] Problema com Firebird 2.1
Olá Rodrigo
Isso funcionou aqui no meu FB 2.1.1.17910
SELECT Cast(REPLACE('12,50', ',', '.') as Numeric(8,2)) FROM RDB$DATABASE
Eduardo
Eduardo Bahiense escreveu:
> Tente assim:
>
> Cast(REPLACE(VTotal, ',', '.') as Numeric(8,2))
>
>
> Eduardo
>
>
> Rodrigo escreveu:
>> Boa Noite a Todos...
>> Estou com o seguinte problema,
>> Migrei o Firebird 1.5 para o 2.1 e algumas procedures que funcionavam bem
>> antes agora estao com problemas:
>> Ex. tenho um Cast(VTotal as Numeric(8,2))
>>
>> onde VTotal é um Varchar(20) com a string 20,00.
>>
>> Quando vai converter exibe erro.
>> Overflow occurred during data type conversion.conversion error from
>> string
>> "20,00".
>>
>> Dae se mudar para 20.00 funciona.
>>
>> Entao resolvi fazer uma UDF pra fazer a conversão, fiz do seguinte modo:
>>
>> na unit Func:
>>
>> unit Func;
>>
>> interface
>>
>> function TrocaVirgPonto(Valor: string): string; cdecl; export;
>>
>> implementation
>>
>> function TrocaVirgPonto(Valor: string): string;
>> var i: integer;
>> begin
>> try
>> for i := 1 to Length(Valor) do
>> if Valor[i] = ',' then
>> Valor[i] := '.';
>> except
>> //
>> end;
>> Result := valor;
>> end;
>>
>> end.
>>
>> e no projeto:
>>
>> library Funcoes;
>> uses
>> SysUtils,
>> Classes,
>> IB_Utils,
>> Func in 'Func.pas';
>>
>> {$R *.res}
>>
>> exports
>> TrocaVirgPonto;
>>
>> begin
>> end.
>>
>> no registro fiz assim:
>> declare external function Func
>> cstring(64)
>> returns cstring(64) free_it
>> entry_point 'TrocaVirPonto' module_name 'Funcoes.dll"';
>>
>>
>> Só que sempre que vou usar a função cai o servidor Firebird...
>>
>> Se alguem puder dar uma ajuda...
>>
>> Atenciosamente,
>> Rodrigo
>>
>>
>>
>> ______________________________________________
>> FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
>> Para saber como gerenciar/excluir seu cadastro na lista, use:
>> http://www.firebase.com.br/fb/artigo.php?id=1107
>> Para consultar mensagens antigas: http://firebase.com.br/pesquisa
>>
>
>
> ______________________________________________
> FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
> Para saber como gerenciar/excluir seu cadastro na lista, use:
> http://www.firebase.com.br/fb/artigo.php?id=1107
> Para consultar mensagens antigas: http://firebase.com.br/pesquisa
>
______________________________________________
FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
Para saber como gerenciar/excluir seu cadastro na lista, use:
http://www.firebase.com.br/fb/artigo.php?id=1107
Para consultar mensagens antigas: http://firebase.com.br/pesquisa
__________ NOD32 3629 (20081121) Information __________
This message was checked by NOD32 antivirus system.
http://www.eset.com
______________________________________________
FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
Para saber como gerenciar/excluir seu cadastro na lista, use:
http://www.firebase.com.br/fb/artigo.php?id=1107
Para consultar mensagens antigas: http://firebase.com.br/pesquisa
______________________________________________
FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
Para saber como gerenciar/excluir seu cadastro na lista, use:
http://www.firebase.com.br/fb/artigo.php?id=1107
Para consultar mensagens antigas: http://firebase.com.br/pesquisa
__________ NOD32 3629 (20081121) Information __________
This message was checked by NOD32 antivirus system.
http://www.eset.com
Mais detalhes sobre a lista de discussão lista