UDF
-
- Üye
- Mesajlar: 38
- Kayıt: 02 Ara 2005 07:36
- Konum: Denizli
UDF
function yas_hesap(var x:TDate):Word;
Var
yil, ay, gun: word;
begin
DecodeDate(x,yil, ay, gun);
Result:=yil;
end;
yukarıdaki fonksiyonu içeren bir UDF hazırladım .. Fonksiyona veri tabanındaki Doğum Tarihini gönderdiğimde 1899 alıyorum .. Parametre geçirirkenmi hata yapıyorum ..
Var
yil, ay, gun: word;
begin
DecodeDate(x,yil, ay, gun);
Result:=yil;
end;
yukarıdaki fonksiyonu içeren bir UDF hazırladım .. Fonksiyona veri tabanındaki Doğum Tarihini gönderdiğimde 1899 alıyorum .. Parametre geçirirkenmi hata yapıyorum ..
-
- Üye
- Mesajlar: 163
- Kayıt: 06 Nis 2006 12:22
Re: UDF
Sayın Arkadaşım,zalimsevki yazdı:function yas_hesap(var x:TDate):Word;
Var
yil, ay, gun: word;
begin
DecodeDate(x,yil, ay, gun);
Result:=yil;
end;
yukarıdaki fonksiyonu içeren bir UDF hazırladım .. Fonksiyona veri tabanındaki Doğum Tarihini gönderdiğimde 1899 alıyorum .. Parametre geçirirkenmi hata yapıyorum ..
Bildiğim kadarıyla bilgisayarlardaki saat/takvim 1900'den başlıyor. Dolayısıyla hesaplamayı ona göre yapmalısınız. Delphi'de TDate tipini incelerseniz bu konuda bilgi elde edebilirsiniz.
Saygılar ve Başarılar
- White Rose
- Üye
- Mesajlar: 726
- Kayıt: 06 Tem 2005 09:41
- Konum: Güneyden
- İletişim:
-
- Üye
- Mesajlar: 38
- Kayıt: 02 Ara 2005 07:36
- Konum: Denizli
-
- Üye
- Mesajlar: 508
- Kayıt: 30 Oca 2004 10:49
s.a.
vatandaşın doğum tarihi ve yaşının hangi tarihte hesaplanmasını istiyorsan
o tarihleri parametre olarak veriyorsun.
uses kısmında aşağıdaki unitler var belki lazım olur
buda ddl.
bu udf için @SadettinPolat arkadaşımıza teşekkür ediyoruz.
kolay gelsin.
vatandaşın doğum tarihi ve yaşının hangi tarihte hesaplanmasını istiyorsan
o tarihleri parametre olarak veriyorsun.
Kod: Tümünü seç
function SPYASBUL(var ib_date,ib_date2: TISC_TIMESTAMP): Smallint;
var
tm_date,sado: TM;
dt,dt2:tdate;
yas:Smallint;
begin
isc_decode_timestamp(@ib_date, @tm_date); //vatandaş
isc_decode_timestamp(@ib_date2, @sado); //now
tm_date.tm_year := tm_date.tm_year+1900;
sado.tm_year :=sado.tm_year+1900;
tm_date.tm_mon := tm_date.tm_mon+1;
sado.tm_mon := sado.tm_mon+1;
dt:= encodedate(tm_date.tm_year,tm_date.tm_mon,tm_date.tm_mday);
dt2 :=encodedate(sado.tm_year,sado.tm_mon,sado.tm_mday);
if dt>dt2 then begin result:=-1; exit; end;
yas:=sado.tm_year-tm_date.tm_year;
if sado.tm_mon<tm_date.tm_mon then yas:=yas-1;
if sado.tm_mon=tm_date.tm_mon then
Begin
if sado.tm_mday<tm_date.tm_mday then yas:=yas-1;
end;
result:=yas;
end;
Kod: Tümünü seç
uses
dialogs, IBExternals, IBHeader, IBIntf,windows,sysutils,dateutils,controls;
Kod: Tümünü seç
DECLARE EXTERNAL FUNCTION SPYASBUL
DATE,
DATE
RETURNS SMALLINT BY VALUE
ENTRY_POINT 'SPYASBUL' MODULE_NAME 'UDFNAME'
kolay gelsin.
Duyduğun Şeylerin Söylediklerim Olduğuna Eminim Ama
Anladığın Şeylerin Anlatmak İstediklerim Olduğuna Emin Değilim
Anladığın Şeylerin Anlatmak İstediklerim Olduğuna Emin Değilim
-
- Üye
- Mesajlar: 38
- Kayıt: 02 Ara 2005 07:36
- Konum: Denizli
function yasal (VAR bg_gun, bg_ay, bg_yil, dt_gun, dt_ay,dt_yil:Integer):smallint;
Var
yas: integer;
begin
yas:=bg_yil-dt_yil;
if dt_ay< bg_ay
then yas:=yas- 01;
if ((dt_ay=bg_ay) and (dt_gun<bg_gun))
then yas:=yas- 01;
result:=yas;
end;
Verilen fonksiyon hata verdi ..
Fonksiyona altı parametre göndererek sorun çözüldü ..
Fonksiyona tarih parametresi geçirip fonksiyonda ayrıştırmak
daha mantıklı ama olmadı ..
yardımcı olan herkesten allah razı olsun ..
Var
yas: integer;
begin
yas:=bg_yil-dt_yil;
if dt_ay< bg_ay
then yas:=yas- 01;
if ((dt_ay=bg_ay) and (dt_gun<bg_gun))
then yas:=yas- 01;
result:=yas;
end;
Verilen fonksiyon hata verdi ..
Fonksiyona altı parametre göndererek sorun çözüldü ..
Fonksiyona tarih parametresi geçirip fonksiyonda ayrıştırmak
daha mantıklı ama olmadı ..
yardımcı olan herkesten allah razı olsun ..
-
- Üye
- Mesajlar: 38
- Kayıt: 02 Ara 2005 07:36
- Konum: Denizli
Kod: Tümünü seç
unit UnitHek;
interface
uses IBExternals, IBHeader,sysutils,dateutils,controls;
type
TM = record
tm_sec : integer; // Seconds
tm_min : integer; // Minutes
tm_hour : integer; // Hour (0--23)
tm_mday : integer; // Day of month (1--31)
tm_mon : integer; // Month (0--11)
tm_year : integer; // Year (calendar year minus 1900)
tm_wday : integer; // Weekday (0--6) Sunday = 0)
tm_yday : integer; // Day of year (0--365)
tm_isdst : integer; // 0 if daylight savings time is not in effect
end;
PTM = ^TM;
ISC_TIMESTAMP = record
timestamp_date : Long;
timestamp_time : ULong;
end;
PISC_TIMESTAMP = ^ISC_TIMESTAMP;
function SPYASBUL(var ib_Bugun,ib_DogTar: TISC_TIMESTAMP): Smallint;cdecl;export;
implementation
procedure isc_decode_timestamp (ib_date: PISC_TIMESTAMP; tm_date: PTM); stdcall; external IBASE_DLL;
function SPYASBUL(var ib_Bugun,ib_DogTar: TISC_TIMESTAMP): Smallint;
var
Bugun, DogTar: TM;
dt_Bugun, dt_DogTar:tdate;
yas:Smallint;
begin
isc_decode_timestamp(@ib_Bugun, @Bugun); //Bugun
isc_decode_timestamp(@ib_DogTar, @DogTar); //DogumTarihi
DogTar.tm_year := DogTar.tm_year+1900;
Bugun.tm_year :=Bugun.tm_year+1900;
DogTar.tm_mon := DogTar.tm_mon+1;
Bugun.tm_mon := Bugun.tm_mon+1;
dt_Bugun :=encodedate(Bugun.tm_year,Bugun.tm_mon,Bugun.tm_mday);
dt_DogTar:= encodedate(DogTar.tm_year,DogTar.tm_mon,DogTar.tm_mday);
yas:=yearsbetween(dt_Bugun, dt_DogTar);
result:=yas;
end;
end.
Not: kodların okunaklı olması için [ code ] [ /code ] etiketleri / tag ları içinde yazalım
