interbase ve udf

Firebird ve Interbase veritabanları ve SQL komutlarıyla ilgli sorularınızı sorabilirsiniz. Delphi tarafındaki sorularınızı lütfen Programlama forumunda sorunuz.
Cevapla
Kullanıcı avatarı
onur301
Üye
Mesajlar: 34
Kayıt: 31 Ara 2004 01:03
Konum: Tokat

interbase ve udf

Mesaj gönderen onur301 » 16 Nis 2005 01:53

arkadaşlar interbase de udf ler hakkında fazla bilgim yok?
mümkünse çok yüzeysel bi şekilde kısaca açıklarmısınız? udf fonksiyonları delphi tarafında mı yoksa veri tabanın da mı çalışır?
bir örnek gönderebilirseniz sevinirim...
Teşekkürler...

Kullanıcı avatarı
vedatkaba
Kıdemli Üye
Mesajlar: 866
Kayıt: 06 Oca 2004 06:50
Konum: DARICA/GEBZE

Mesaj gönderen vedatkaba » 16 Nis 2005 02:50

UDF, kısacası database ile yaptıramadagımız matematiksel yada parse etme işlemlerimizi rahatlıkla yaptırmamızı yarayan dll dosyalarıdır. Bunları Delphi ile rahatlıkla yazabilirsiniz.UDF ile neler yaptırabiliriz?
UDF ile aklınıza gelebilecek her türlü kolaylıgı saglayabilirsiniz. Mesala Eger kişi veritabanı alanına dogum tarihini girerse ve siz yaşını hesaplamak isterseniz bunu veritabanına yaptırabilirsiniz.Aksi durumda bunu programınızdan kod yazarak yapmak zorunda kalacaktınız. Peki, gerçekte kod yazmak dogru mu? Her ikisi de aynı işlemi yapmasına ragmen kod yazmak dogru degildir. Neden? Çünkü, SQL Explorer ya da başka programlar ile veri girilmek istendiginde sizin programınız çalışmadıgından yaş hesaplanmayacaktır oysa ki, UDF Kullanıldıgında başka programlardan dogum tarihi girilmesine ragmen yaş hesaplama işlemi yapılır. Bu da bizim Veritabanımızın daha stabil çalışması anlamına gelecektir. UDF Kullanırken bazı noktalara dikkat edilmesi gerekir bunlardan en önemlisi Null (Degersiz veya boş veri) alan kullanılmamasıdır.

Bir UDF oluşturup kullanmak için öncelikle udf nin kullanacağı, içinde fonksiyon bulunan bir dll lemiz olmalı

Dll hazırlamak için önce File-New menüsünden Other seçeneğini seçtikten sonra çıkan pencerenin New sekmesindeki DLL Wizad’ı seçin.
Bu işlemden sonra File-New menüsünden Unit' Tıklayıp Projeye yeni bir unit ekliyoruz.
DLL'yi Derlemeden Öncce Projeyi UDF_TOPLA ismiyle Kaydedin

> Dll dosyaları F9 tuşu ile çalıştırılmazlar. Derlemek için Project-Build UDF_TOPLA seçeneğini kullanmalısınız. Bu işlem sonrasında proje exe olarak değil dll uzantısına sahip olacaktır. Derlediğinizde herhangi bir hata yoksa projeyi kaydettiğiniz yerde UDF_TOPLA.DLL Dosyasını Gööreceksiiniz.



Oluşturduğunuz DLL'yi firebirdin yada interbasenin udf klasörüne kopyalayın.

benim pc de firebird dizini C:\Program Files\Firebird\Firebird_1_5\UDF

interbase udf dizini C:\Program Files\Borland\InterBase\UDF de bulunuyor

udf yi interbaseye tanıtmak için aşağıdaki kodu kullaanıyoruz.



DECLARE EXTERNAL FUNCTION UDFEM
INTEGER,
INTEGER
RETURNS INTEGER BY VALUE
ENTRY_POINT 'Topla' MODULE_NAME 'UDF_TOPLA'

DECLARE EXTERNAL FUNCTION Udf Yi Tanımlamayı Sağlıyor. Bundan Sonra Bir Ad Seçiyoruz. Ben Udfem Yaptım. Daha Sonra Dll'de Kullandığımız Parametrelerin Tipini Hyazıyoruz. Fonksiyonda İ Ve J Adında İki Parametremmiz Olduğu İçin Ve Tipleride İnteger Olduğu İçin İki Nteger Tipi Göseriyoruz. Birden Fazlaysa Parametre Sayısı Tiplerin Arasına Virgül Ekliyoruz.

Daha sonra RETURNS yazıp fonksiyon tipini integer seçiyoruz. returnstan sonraki tip tanımına udf den dönen değer eklenir. udf den tek değeröner. tıpkı fonksiyon gibi. zaten buda IB / FB fonksiyonu.. daha sonra BY VALUE yazıyoruz. BY VALUE yerine BY reference yazabiliriz. siz BY VALUE kuullanın. sonra ENTRY_POINT tırnak arasında dll de kullandığımız fonksiyon ismini yazıyoruz. son olarak MODULE_NAME yazıp tırnak arasında dll ismini uzantısını kullanmadan yazıyoruz.
Tools> SQL Editörü açıp oraya şu kodu yazarak etkisini görebilirsiniz

select UDFEM (1001,202) from rdb$database
rdb$database > UDF bilgilerini tutan sistem tablolarından biridir.
Bu makaleyi yazan arkadaşa da teşekkür ederimm.hakkını yememek lazım..kolay gelsin
***********************************
Kamil odur ki; koya dünyada bir eser,
Eseri olmayanın, yerinde yeller eser.

***********************************

Kullanıcı avatarı
onur301
Üye
Mesajlar: 34
Kayıt: 31 Ara 2004 01:03
Konum: Tokat

Mesaj gönderen onur301 » 16 Nis 2005 07:54

ben bu makaleyi okumuştum zaten... :wink:
çok küçük bir uygulama gönderebilirseniz sevinirim.
Saygılar...

Kullanıcı avatarı
vedatkaba
Kıdemli Üye
Mesajlar: 866
Kayıt: 06 Oca 2004 06:50
Konum: DARICA/GEBZE

Mesaj gönderen vedatkaba » 16 Nis 2005 09:11

Bence bu ve buna benzer kaynaklara göre kendin yapmaya çalışırsan senin için daha faydalı olur..şu anda gönderme imkanım yok fırsatını bulursam yardımcı olmaya çalışırım.firebird ün sitesinde de buna benzer dökuman ve örnek uygulamalar olması gerekir.
***********************************
Kamil odur ki; koya dünyada bir eser,
Eseri olmayanın, yerinde yeller eser.

***********************************

Kullanıcı avatarı
vedatkaba
Kıdemli Üye
Mesajlar: 866
Kayıt: 06 Oca 2004 06:50
Konum: DARICA/GEBZE

Mesaj gönderen vedatkaba » 16 Nis 2005 09:23

Az önceki mesajı yazdıktan sonra forumda gezerken buldum..

Arkadaşlar arama yapalım burası bir hazine...

:ara arama yapalım aramaa

viewtopic.php?t=5570

buraya bir göz at
***********************************
Kamil odur ki; koya dünyada bir eser,
Eseri olmayanın, yerinde yeller eser.

***********************************

Kullanıcı avatarı
futbolcu
Üye
Mesajlar: 129
Kayıt: 02 Tem 2003 07:33
Konum: Ankara

Mesaj gönderen futbolcu » 16 Nis 2005 09:42

merhaba,
İşinize yarayabilecek iki güzel link vernek istiyorum. İsterseniz bir inceleyin :wink:
http://www.delphidunyasi.com/IBExpertle_UDF.htm
http://www.delphidunyasi.com/UDF%20Oluşturma.htm
Bilgi çoğaldıkça krallar ölür

Cevapla