[firebase-br] Problema com Firebird 2.1
Eduardo Bahiense
eduardo em icontroller.com.br
Qui Nov 20 21:14:32 -03 2008
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
>
Mais detalhes sobre a lista de discussão lista