[firebase-br] UDF(se =?iso-8859-1?Q?ningu=E9m_souber=2Cpor_Favor_Cantu=2Cme_salva_...?=)
Pha
lista em pha.com.br
Ter Set 13 08:52:52 -03 2005
Declare a udf da seguinte forma (adicione o var).
function calcula_juro(var valor_original, var percentual_juro: Double; var
numero_dias: integer): Double; cdecl; export;
Aconcelho voce a baixar a udf TBUDF ou PHAUDF, para voce utilizar como
exemplo.
PHA
Nova Odessa / SP - Brazil
Membro do TeamFB (FireBase)
> Prezados senhores,
>
>
> no site www.firebase.com.br eu encontrei um material falando sobre a
> criação de UDF'S com DLL. Explicava como criar a DLL pelo Delphi e como
> instalar a mesma no Banco.
>
> A criação da DLL e a utilização da mesma no Delphi funciona perfeitamente,
> ou seja, testei usar a função declarando ela em um fonte meu do delphi e a
> função fez o calculo corretamente (essa função faz um cálculo de juro).
>
>
> Porém quando instalo essa função no Banco, beleza instala legal, mas
> quando utilizo sempre retorna com o valor zero.
>
> Exemplo:
>
> select valor_titulo,
> f_calcula_juro(valor_titulo(100),percentual_juro(4),dias_atraso(30)) from
> titulo
>
> obs.: os valores entre parenteses é só para ilustrar o conteúdo de cada
> uma das informações.
>
> esse select deveria retornar os seguintes dados:
>
> 100, 104 - ou seja o valor original e o valor orignal acrescido de 4% de
> juro.
>
> realmente gostaria que alguém me informasse o que pode estar errado com a
> minha função. Vou descrever ela abaixo para se houver algum "guru" que
> consiga criar uma DLL dessa função e essa função (UDF) funcione no banco
> ficarei eternamente grato.
>
>
> unit xxx;
>
> interface
>
> uses math;
>
> function calcula_juro(valor_original,percentual_juro: Double; numero_dias:
> integer): Double; cdecl; export;
>
> implementation
>
> function calcula_juro(valor_original,percentual_juro: Double; numero_dias:
> integer): Double;
> var valor_futuro, taxa: Double;
> dias_juro, i, dias_calculados, dias_mes: integer;
> begin
> dias_mes:=30;
> percentual_juro:=percentual_juro/100;
>
> taxa:=1+percentual_juro * frac(abs(numero_dias)/dias_mes);
>
> taxa:=taxa / power(1 + percentual_juro,(abs(numero_dias) div dias_mes)
> * -1);
>
> if numero_dias >= 0 then
> valor_futuro:=valor_original * taxa
> else valor_futuro:=valor_original / taxa;
>
> Result:=valor_futuro
> end;
>
>
>
> Grato desde já,
>
> Geison C. Shida
> ______________________________________________
> FireBase-BR (www.firebase.com.br) - Hospedado em www.bavs.com.br
> Para editar sua configuração na lista, use o endereço
> http://mail.firebase.com.br/mailman/listinfo/lista_firebase.com.br
> Para consultar mensagens antigas: http://firebase.com.br/pesquisa
>
Mais detalhes sobre a lista de discussão lista