aynı veritabanina baglı farkli programlarin haberlesmesi
Forum kuralları
Forum kurallarını okuyup, uyunuz!
Forum kurallarını okuyup, uyunuz!
İyi , köyü yönü kullanılan metoflar bunlar daha iyisini pek sanmıyorum. Firebird de Post_event derim .
İyi Çalışmalar.
İyi Çalışmalar.
I love my car.
Blog Yaptık
Blog Yaptık
Post_event diye tabir ettiğiniz olayı daha ayrıntılı anlatabilirmisiniz?
yani tableın post eventinden sonra ağ üzerindeki tüm bilgisayarlarda yeni kayıt gözüksün diye tabloyu kapatıp açacakmıyız?
sadece bir tabloyu kapatıp açmak yeterli mi olacak?
yoksa database'i disconnect yapıp tekrar connect mi yapıcaz?
tabi database disconnect olunca tüm tablolar kapanıyor. onları da tekrar açmak lazım olacak?
olayı çok basit bir kodla ifade edelim.
ağ üzerinde çalışan bir program olsun.
iki bilgisayarda da bir dbgrid ekranda gözüküyor olsun.
bilgisayarlardan birinde yeni bir kayıt girildi. diğer bilgisayarın ekranındaki dbgride yeni kayıt hemen yansısın. ( yenile gibi bi tuton olmadan )
yani tableın post eventinden sonra ağ üzerindeki tüm bilgisayarlarda yeni kayıt gözüksün diye tabloyu kapatıp açacakmıyız?
sadece bir tabloyu kapatıp açmak yeterli mi olacak?
yoksa database'i disconnect yapıp tekrar connect mi yapıcaz?
tabi database disconnect olunca tüm tablolar kapanıyor. onları da tekrar açmak lazım olacak?
olayı çok basit bir kodla ifade edelim.
ağ üzerinde çalışan bir program olsun.
iki bilgisayarda da bir dbgrid ekranda gözüküyor olsun.
bilgisayarlardan birinde yeni bir kayıt girildi. diğer bilgisayarın ekranındaki dbgride yeni kayıt hemen yansısın. ( yenile gibi bi tuton olmadan )
s.a.
arkadasim post_event veya ibevents diye arat bakalım bi neler çıkıyor karşına.
fb/ib de trigerlardan tabloya kayıt eklendi diye bi mesaj yollayacaksın. bu mesajı TIBEvents bileşeni ile yakalayıp gerektiğinde tabloyu açıp kapatacaksın.
olay bundan ibaret.
NOT: böyle yazınca kolay göründü.
arkadasim post_event veya ibevents diye arat bakalım bi neler çıkıyor karşına.
fb/ib de trigerlardan tabloya kayıt eklendi diye bi mesaj yollayacaksın. bu mesajı TIBEvents bileşeni ile yakalayıp gerektiğinde tabloyu açıp kapatacaksın.
olay bundan ibaret.
NOT: böyle yazınca kolay göründü.

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
-
- Kıdemli Üye
- Mesajlar: 1223
- Kayıt: 26 Nis 2005 04:08
Bu işlemi her zaman % 100 başarıyla yapamayabilirsiniz...Kaldı ki eğer önemli bir veriden bahsediliyorsa ve yoğun bir ağ ortamı varsa kilitlenmelere dahi neden olabilecektir..Büyük projelerde genelde "Yenile" butonu koyularak yapılıyor ancak bu, programın esnekliğini kaybetmesine neden oluyor..Ben de ClientSocket ve ServerSocket bileşenleriyle yapılması taraftarıyım..aslangeri yazdı: fb/ib de trigerlardan tabloya kayıt eklendi diye bi mesaj yollayacaksın. bu mesajı TIBEvents bileşeni ile yakalayıp gerektiğinde tabloyu açıp kapatacaksın.
Saygılarımla.
Clientsocket ve ServerSocket'le problemi çözmek demek ayrı bir program yazmak veya en azından ana bilgisayara bir servis programı veya normal bir program yazmak anlamına geliyor.
Ben böyle bir problemi kullanılan veritabanınından bağımsız olacak şekilde şöyle çözerdim:
Veritabanına bir tablo eklerdim.
Önemli gördüğüm tabloların AFTER_UPDATE, AFTER_DELETE, AFTER_INSERT trigger'larına kod yazarak
bu tabloyu update ederdim. (Veritabanıyla fazla uğraşmak istemiyorum derseniz programın içinden de yapabilirsiniz.)
Client programlarında bir timer koyarak birkaç saniyede bir bu tabloyu kontrol ederek değişen tabloları bulup basit bir döngü ile
bütün form ve datamodullerdeki açık tabloları müsaitse (edit modunda falan değilse) refresh ederdim.
İyi çalışmalar.
Ben böyle bir problemi kullanılan veritabanınından bağımsız olacak şekilde şöyle çözerdim:
Veritabanına bir tablo eklerdim.
Kod: Tümünü seç
CREATE TABLE DEGISENTABLOLAR (
TABLO_ADI VARCHAR(50) NOT NULL,
SON_DEGISME_TARIHI TIMESTAMP NOT NULL,
CONSTRAINT PK_DEGISENTABLOLAR PRIMARY KEY (TABLO_ADI));
bu tabloyu update ederdim. (Veritabanıyla fazla uğraşmak istemiyorum derseniz programın içinden de yapabilirsiniz.)
Client programlarında bir timer koyarak birkaç saniyede bir bu tabloyu kontrol ederek değişen tabloları bulup basit bir döngü ile
bütün form ve datamodullerdeki açık tabloları müsaitse (edit modunda falan değilse) refresh ederdim.
İyi çalışmalar.
-
- Kıdemli Üye
- Mesajlar: 1223
- Kayıt: 26 Nis 2005 04:08
Server ya da clientte (design time ilgili bileşenlere default değerler verilmek suretiyle) connect komutunu verip sendmessage ya da receivetext propertylerini işlemek için neden bir program yazmak gerekir sizce?Hakan Can yazdı:Clientsocket ve ServerSocket'le problemi çözmek demek ayrı bir program yazmak veya en azından ana bilgisayara bir servis programı veya normal bir program yazmak anlamına geliyor.
Ben "Clientsocket ve ServerSocket'le problemi çözmek demek ayrı bir program yazmak veya en azından
ana bilgisayara bir servis programı veya normal bir program yazmak anlamına geliyor." demiştim.
Verdiğiniz cevap veya sorunuz net değil. TServerSocket'i TClientSocket'le aynı program içine mi yazacaksınız?
Kullanıcılar veritabanı ile ilgili zaten program yazıyorlar. Eğer Socketleri kullanacaksanız TClientSocket'i bu
programın içine yerleştirirsiniz. Dediğiniz gibi design time default değerleri verirsiniz vs...
Herhalde TServerSocket'i de tutup aynı program içine yazmazsınız. Yani sonuçta TServerSocket'i yani bütün mesajların
gideceği ve cevapların gönderileceği TServerSocket'i ayrı bir programa (ben şahsen servis programı yazarım) yerleştiririm.
Ve bu program bilgisayar açıldığında otomatik olarak çalışır vs...
Ama derseniz ki ben illa ayrı bir program yazmam inat ettim TClientSocket'le aynı yere yazacağım. Tabi ki yapabilirsiniz...
Bilmiyorum izah edebildim mi?
Şahsen diğer arkadaşların da bu konuda görüşlerini almak isterdim.
Katılıyorlar mı (gülmekten
) katılmıyorlar mı?
İyi çalışmalar.
ana bilgisayara bir servis programı veya normal bir program yazmak anlamına geliyor." demiştim.
Verdiğiniz cevap veya sorunuz net değil. TServerSocket'i TClientSocket'le aynı program içine mi yazacaksınız?
Kullanıcılar veritabanı ile ilgili zaten program yazıyorlar. Eğer Socketleri kullanacaksanız TClientSocket'i bu
programın içine yerleştirirsiniz. Dediğiniz gibi design time default değerleri verirsiniz vs...
Herhalde TServerSocket'i de tutup aynı program içine yazmazsınız. Yani sonuçta TServerSocket'i yani bütün mesajların
gideceği ve cevapların gönderileceği TServerSocket'i ayrı bir programa (ben şahsen servis programı yazarım) yerleştiririm.
Ve bu program bilgisayar açıldığında otomatik olarak çalışır vs...
Ama derseniz ki ben illa ayrı bir program yazmam inat ettim TClientSocket'le aynı yere yazacağım. Tabi ki yapabilirsiniz...
Bilmiyorum izah edebildim mi?
Şahsen diğer arkadaşların da bu konuda görüşlerini almak isterdim.
Katılıyorlar mı (gülmekten

İyi çalışmalar.
hepinize kıymetli fikirleriniz için teşekkür ediyorum.
server program ve client program olmak üzere iki ayrı program yazma olayını (kendi projem için) gereksiz görüyorum. nitekim çok büyük projelerde mükemmel sonuçlar alınabilir. ama benim projem en fazla 20 bilgisayarda çalışacak. timer ile saniyede bir veritabanı yoklama olayını hiç mantıklı bulmuyorum.
sayın P206nın önderdiği ve sayın aslangeri'nin tam not verdiği post_event ve ibevent kontrol methodunu uyguladım. ağı izleyen bir program buldum ve 5 bilgisayarda programı denedim. gerçekten de ağ ortamını hiç kasmadı. sonuçta ağ üzerinden giden sadece bir string o kadar.
ben bu kadar öneriden kendi payıma post_event ile tetiklenen ibevent altında tableX.refresh; yöktemini seçtim.
emeği geçen herkese teşekkürler.
server program ve client program olmak üzere iki ayrı program yazma olayını (kendi projem için) gereksiz görüyorum. nitekim çok büyük projelerde mükemmel sonuçlar alınabilir. ama benim projem en fazla 20 bilgisayarda çalışacak. timer ile saniyede bir veritabanı yoklama olayını hiç mantıklı bulmuyorum.
sayın P206nın önderdiği ve sayın aslangeri'nin tam not verdiği post_event ve ibevent kontrol methodunu uyguladım. ağı izleyen bir program buldum ve 5 bilgisayarda programı denedim. gerçekten de ağ ortamını hiç kasmadı. sonuçta ağ üzerinden giden sadece bir string o kadar.
Kod: Tümünü seç
post_event=('UPDATE OLDU')
emeği geçen herkese teşekkürler.
-
- Kıdemli Üye
- Mesajlar: 1223
- Kayıt: 26 Nis 2005 04:08