[firebase-br] Problema com Firebird 2.1

Eduardo Bahiense eduardo em icontroller.com.br
Sex Nov 21 08:54:41 -03 2008


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
> 





Mais detalhes sobre a lista de discussão lista