Dll Fire Birde bağlanırmı ?

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ı
y_tatar
Üye
Mesajlar: 24
Kayıt: 28 Haz 2005 03:32
Konum: Ankara
İletişim:

Dll Fire Birde bağlanırmı ?

Mesaj gönderen y_tatar »

S.A.

Ben bir dll yazıcam bu dll lin Table nin AfterInsert ine yerleştireceğin fakat dll kendi içinde işlem yapıcam ve veri tabanında sorgulama yapıcak bunun için dll in veri tabanına baglanması gerekiyor.

Bu Normal şartlarda dll içine bir database nesnesi kolyarak bağlantı yapması saglanarak mümkün fakat budurum aşırı bir performans kaybına neden oluyor bu neden le ben yeni oturum açmak yerine FireBird un kendi oturumunu kullanmak isityorum.

Bu durumda dll in içine Firebird un oturumunun taşınması gerekiyor işte benim sorum bu :?:

FireBird Tirigeri işlem yaparken Kullandığı oturumu ben nasıl olurda dll in içinde kullanırım.

Şimdiden Yardımlarınız için Teşekkürler
Kolay gelsin .....
“Kolaylaştırın, zorlaştırmayın, müjdeleyin, nefret ettirmeyin.”
Kullanıcı avatarı
Kuri_YJ
Moderator
Mesajlar: 2248
Kayıt: 06 Ağu 2003 12:07
Konum: İstanbul
İletişim:

Mesaj gönderen Kuri_YJ »

A.S.

Konuyu örnekleyerek açıklarsanız yardımcı olabiliriz sanırım.

DLL Firebird için yazılıyor ve Server'a tanımlanıyor ve bu DLL'deki fonksiyonlar, Firebird için UDF olarak geçiyorlar. Yani Aslında çağrıldığı noktada FB'ie bir nevi bağlantısı mevcut oluyor. Ancak Connection'ın kendisi parametre olarak geçilmiyor Connection içindeyken Trigger veya SP bu External DLL'deki UDF'i Çağırıyor. Bu sırada bir takım bilgi aktarımı yapabilirsiniz. Belki Connection'a ihtiyacınız olmaz.

Kolay Gelsin
Kuri Yalnız Jedi
Harbi Özgürlük İçin Pisi http://www.pisilinux.org/
Kullanıcı avatarı
y_tatar
Üye
Mesajlar: 24
Kayıt: 28 Haz 2005 03:32
Konum: Ankara
İletişim:

Mesaj gönderen y_tatar »

S.A.

Benim Yapmak İştediğim şu Dışardan bir dll veya önere bileceğiniz bir şekilde işlem yapılan vyapılan veri satırındaki bütün verileri bir dosyaya kadetmek isityorum

Örneklerse bir Tablem Olsun bu tablede 20 tane fields olsun
1) Indexno
2) Adı
3) Soyadı
4) Tel
.
.
.
20) ilgili not

gibi

ben bu Tableye bir veri girildiği zaman bunu her hangi bir yontemle bir dosyaya (Bu dosya Txt veya başka bir formatta ola bilir) yazmak isityorum.

ama bunu düşünürken genel bir yapı arıyorum yani tek table için değil her table için uygulana bilecek kadar esnek olmalı.

bu işlemi

"***** Yaz Dışardan tanımlı bir dll"

Select * From Tablename Into : Alan1,Alan2,Alan3.....alan20;
Yaz('C:\Deneme.Txt',Alan1+Alan2+.....Alan3); Diye Bir Yöntemle Yazdıra bilir. Fakat bu yöntem için farklı table lerde ve table üzerinde alan değişikliklerinde tekrar tekran düzenlenmesi gerken bir yöntem


bununyerine ben Tablenin adını verdiğim zaman Tablede kaç alan olduğunu hesaplayın onların listesini alıp dışarıya çıkarta bilecek bir yapı istiyorum bu durumdada dll in içinde SQL i çalıştırmam gerekiyor bunun içinde dll in dataya bağlanması gerekiyor.

1)Bu işilemi yapan Hazır bir UDF varmı?
2)Dll den FireBird un server otourmuna direk baglana bilecek Bağlantı yöntemi varmı varsa basitce kodununu yaza bilirmisiniz

(Not
Baglantı Esnasında IBDatabase1 nesnesi kullanmak yerine FireBird un otorumunu dll içine taşımak isitiyorum)
“Kolaylaştırın, zorlaştırmayın, müjdeleyin, nefret ettirmeyin.”
Kullanıcı avatarı
Kuri_YJ
Moderator
Mesajlar: 2248
Kayıt: 06 Ağu 2003 12:07
Konum: İstanbul
İletişim:

Mesaj gönderen Kuri_YJ »

Selamlar,

Ben de bir ara bir iş için böyle bir yöntem uygulamayı düşündüm (bir nevi Log explorer tarzı bir şey oluşturmak ve LOG'lar oluşturmaktı. Silinen kayıtları kendi otomatik dönecek, yeni kayıtları listeleyecek vs.)

Bahsettiğiniz tarzda bir şey görmedim, belki yapılabilir veya Yurtdışında birileri yapmış olabilir ama yine DLL'in içinde, FB'ye bağlanmak biraz yanlış bir fikir gibime geliyor. Yani siz içerde (yani DLL'de) yazdığınız UDF'i şişirirsiniz.

Onun yerine (siz de benzer bir şey söylemişsiniz) bence şöyle bir şey yapılabilir. Bir SP yazarsınız, bu SP içinde bir UDF çağırırsınız ve bu UDF'in parametreleri olur, TabloAdi, TxtDosyaAdi, n tane Alan.

Trigger'larınızda bu SP'yi çağırırsınız, çağırdığınız bu SP'ye paremetre olarak Tablo adını geçersiniz, Tablonun kayıt ID2sini geçersiniz.

SP içinde O Tablodaki alanları çözümlersiniz RDB$ tablolarından, size gerkli bütün çözümlemeleri yaptıktan sonra, UDF'i çağırırsınız ve bilgileri istediğiniz yere Export etmiş olursunuz.

Kolay Gelsin
Kuri Yalnız Jedi
Harbi Özgürlük İçin Pisi http://www.pisilinux.org/
Kullanıcı avatarı
aslangeri
Moderator
Mesajlar: 4322
Kayıt: 26 Ara 2003 04:19
Konum: Ankara
İletişim:

Mesaj gönderen aslangeri »

s.a.
log için external file oluşturulabilir.
daha sonra after trigerlarda bu dosyaya insert yapılabilir.
eğer udf olacaksa uzunbir cstring parametresi olan bir udf olabilir.
tabloya yeni kayıt eklendiği zaman o tablodaki tüm kayıtları yeniden yazdırmak pek mantıklı olmaz gibime geliyor.
onun yerine şöyle bir udf tanımlanabilir.

Kod: Tümünü seç

logaekle(tabloadi,bilgi:string)
bu udf tabloadi parametresindeki dosyaya bir satır ekleyip bilgi yi o dosyay ekleyebilir.
tetikleyicilerde bu udf çalıştırılarakda yapılabilir.
umarım anlatabilmişimdir.
kolay gelsin.
Duyduğun Şeylerin Söylediklerim Olduğuna Eminim Ama
Anladığın Şeylerin Anlatmak İstediklerim Olduğuna Emin Değilim
Kullanıcı avatarı
Kuri_YJ
Moderator
Mesajlar: 2248
Kayıt: 06 Ağu 2003 12:07
Konum: İstanbul
İletişim:

Mesaj gönderen Kuri_YJ »

Selamlar,

Ben de aynı şeyi anlatmıştım ama Trigger'larda hiçbir şey yapmasına gerek kalmadan Doğrudan SP'yi çağırmalı ve Bu SP, Hangi Trigger'dan geliyorsa, ilgili tabloyu tespit edip, Alanlarını ayrıştırmalı ve ilgili UDF'i çağırmalı.

Böylelikle,

Kod: Tümünü seç

  EXECUTE LogKaydet TriggerdakiTabloAdi
gibi Triggerların içinden çağrılan bir SP olmalı.

Kolay Gelsin
Kuri Yalnız Jedi
Harbi Özgürlük İçin Pisi http://www.pisilinux.org/
Cevapla