datagrid, firebird, trigger
-
- Üye
- Mesajlar: 20
- Kayıt: 08 Tem 2008 04:25
datagrid, firebird, trigger
arkadaşlar firebird kullanılarak yapılan bir programda veritabanına kayıt yapıldığında, bunu datagrid' de göremiyorum ancak programı kapatıp yeniden açtığımda yapılan kayıtlar datagridde görülebiliyor. benim istediğim yeni bi kayıt girdiğimde yada sildiğimde aynı anda programı kapatıp açmaya gerek kalmadan bu değişiklikleri datagrid'de görmek. nasıl yapılabileceğini forumda araştırdım triggerden bahsedilmiş ama tam anlayamadım elimdeki kaynaklardada triggera pek değinilmemiş. bu sorunu nasıl çözebilirim yardımcı olacak arkadaşlar şimdiden teşekkürler...
Re: datagrid, firebird, trigger
en basiti, tabloyu açıp kapatmak. triggerdan kasıt veri tabanı oalaylarını yakalayan ibevent nesnesini kullanmak. bunun kullanıma bakın ve forumda arayın.
Re: datagrid, firebird, trigger
Transactionlarla ilgili bir problem. Eger iki ayrı programdan bahsediliyorsa, yani başka bir programın girdigi kayıtları görmek için programı açıp, kapatıyorsan, program yerine table ı açıp, kapatabilirsin. Yani kaydı yapan program veritabanı bilgilerini yollayıp, tablei kapattıgı zaman transaction sonlanır.
Eger sözkonusu olay aynı program içinde gerçekleşiyorsa, veritabanına baglı tek bir transaction ı bütün tablelar için kullan, ama yine de tam çözüm olmayabilir. Genel ve kesin çözüm, table ları belirli süreler içinde açıp, kapatman olabilir. Bu işlemi bir timer a baglayabilirsin.
Bilgiler girildikten sonra table kapatılmalı ve mümkünse database baglantısı da sonlandırılmalıdır. Bu şekilde transaction ların sonlandırılması garanti altına alınmış olur. Diger programlar da açık olan tableları 5 dakika da bir kapatıp, tekrar açılabilirler.
Trigger gibi yöntemlerle eventler oluşturabilirsin. Program içinde bu eventleri yakalayıp, tableda degişiklik oldugunu anlar ve tablei bu şekilde sadece degişiklik oldugunda açıp kapatabilirsin. Tableda olabilen degişiklikler şunlardır; insert, delete, update. Tüm bu olayları her table için ayrı ayrı yakalayıp, event oluşturman gerekir. Bu biraz daha zahmetli bir yöntemdir.
Table derken ibdataset, ibquery gibi dataset bileşenlerinden bahsediyorum.
Eger sözkonusu olay aynı program içinde gerçekleşiyorsa, veritabanına baglı tek bir transaction ı bütün tablelar için kullan, ama yine de tam çözüm olmayabilir. Genel ve kesin çözüm, table ları belirli süreler içinde açıp, kapatman olabilir. Bu işlemi bir timer a baglayabilirsin.
Bilgiler girildikten sonra table kapatılmalı ve mümkünse database baglantısı da sonlandırılmalıdır. Bu şekilde transaction ların sonlandırılması garanti altına alınmış olur. Diger programlar da açık olan tableları 5 dakika da bir kapatıp, tekrar açılabilirler.
Trigger gibi yöntemlerle eventler oluşturabilirsin. Program içinde bu eventleri yakalayıp, tableda degişiklik oldugunu anlar ve tablei bu şekilde sadece degişiklik oldugunda açıp kapatabilirsin. Tableda olabilen degişiklikler şunlardır; insert, delete, update. Tüm bu olayları her table için ayrı ayrı yakalayıp, event oluşturman gerekir. Bu biraz daha zahmetli bir yöntemdir.
Table derken ibdataset, ibquery gibi dataset bileşenlerinden bahsediyorum.
-
- Üye
- Mesajlar: 20
- Kayıt: 08 Tem 2008 04:25
Re: datagrid, firebird, trigger
teşekkürler arkadaşlar..