Fórum Help para criar uma Udf!!! #51695
21/07/2005
0
Opa blz...
ae sou novo nesse lance de bando de dados e to querendo testar umas procedure só que encontrei um primeiro problema não achei uma função em sql que retornasse a diferença entre datas diferentes. ae pesquisando descobri q tem como escrever uma dll e ler ela no banco de dados como UDFs. até ai tdo bem mais não sei o q fazer to meio perdido. :( será q alguem poderia me ajudar ... o procedimento q eu quero transformar em UDF é esse aqui.
[i:22ea8431bf]function IdadeAtual(Dt_Nasc : PChar; Dt_DataAtual: PChar): Integer; cdecl; export;
Var AuxIdade, Meses : String;
MesesFloat : Real;
DataAtual, Nasc: TDate;
IdadeInc, IdadeReal : Integer;
begin
DataAtual := StrToDate(Dt_DataAtual);
Nasc := StrToDate(Dt_Nasc);
AuxIdade := Format(´¬0.2f´, [(DataAtual - Nasc) / 365.6]);
Meses := FloatToStr(Frac(StrToFloat(AuxIdade)));
if AuxIdade = ´0´ then
begin
Result := 0;
Exit;
end;
if Meses[1] = ´-´ then
begin
Meses := FloatToStr(StrToFloat(Meses) * -1);
end;
Delete(Meses, 1, 2);
if Length(Meses) = 1 then
begin
Meses := Meses + ´0´;
end;
if (Meses <> ´0´) And (Meses <> ´´) then
begin
MesesFloat := Round(((365.6 * StrToInt(Meses)) / 100) / 30.47)
end
else
begin
MesesFloat := 0;
end;
if MesesFloat <> 12 then
begin
IdadeReal := Trunc(StrToFloat(AuxIdade)); // + MesesFloat;
end
else
begin
IdadeInc := Trunc(StrToFloat(AuxIdade));
Inc(IdadeInc);
IdadeReal := IdadeInc;
end;
Result := IdadeReal;
end;[/i:22ea8431bf]
vlw´s galera.
ae sou novo nesse lance de bando de dados e to querendo testar umas procedure só que encontrei um primeiro problema não achei uma função em sql que retornasse a diferença entre datas diferentes. ae pesquisando descobri q tem como escrever uma dll e ler ela no banco de dados como UDFs. até ai tdo bem mais não sei o q fazer to meio perdido. :( será q alguem poderia me ajudar ... o procedimento q eu quero transformar em UDF é esse aqui.
[i:22ea8431bf]function IdadeAtual(Dt_Nasc : PChar; Dt_DataAtual: PChar): Integer; cdecl; export;
Var AuxIdade, Meses : String;
MesesFloat : Real;
DataAtual, Nasc: TDate;
IdadeInc, IdadeReal : Integer;
begin
DataAtual := StrToDate(Dt_DataAtual);
Nasc := StrToDate(Dt_Nasc);
AuxIdade := Format(´¬0.2f´, [(DataAtual - Nasc) / 365.6]);
Meses := FloatToStr(Frac(StrToFloat(AuxIdade)));
if AuxIdade = ´0´ then
begin
Result := 0;
Exit;
end;
if Meses[1] = ´-´ then
begin
Meses := FloatToStr(StrToFloat(Meses) * -1);
end;
Delete(Meses, 1, 2);
if Length(Meses) = 1 then
begin
Meses := Meses + ´0´;
end;
if (Meses <> ´0´) And (Meses <> ´´) then
begin
MesesFloat := Round(((365.6 * StrToInt(Meses)) / 100) / 30.47)
end
else
begin
MesesFloat := 0;
end;
if MesesFloat <> 12 then
begin
IdadeReal := Trunc(StrToFloat(AuxIdade)); // + MesesFloat;
end
else
begin
IdadeInc := Trunc(StrToFloat(AuxIdade));
Inc(IdadeInc);
IdadeReal := IdadeInc;
end;
Result := IdadeReal;
end;[/i:22ea8431bf]
vlw´s galera.
Brunosh3
Curtir tópico
+ 0
Responder
Clique aqui para fazer login e interagir na Comunidade :)