[firebase-br] Problema com Firebird 2.1
Eduardo Bahiense
eduardo em icontroller.com.br
Sex Nov 21 11:48:11 -03 2008
SELECT Cast(REPLACE('12,50', ',', '.') as Numeric(8,2)) FROM RDB$DATABASE
Se isso funcionar, provavelmente vc está usando REPLACE de forma errada
em sua query, ou VALOR pode estar sen do passado como NULL, ou existe,
além de ',', '.' no conteúdo dos campos, ou alguma outra coisa.
Eduardo
Rodrigo escreveu:
> 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
>
>
>
> ______________________________________________
> 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
>
Mais detalhes sobre a lista de discussão lista