aynı veritabanina baglı farkli programlarin haberlesmesi

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Kullanıcı avatarı
şimal
Kıdemli Üye
Mesajlar: 516
Kayıt: 10 Kas 2003 09:36
Konum: ANKARA

aynı veritabanina baglı farkli programlarin haberlesmesi

Mesaj gönderen şimal »

iki tane farklı program var ayni makinada birlikte çalisiyor
ayni veritabanina baglilar.
Biri veritabanina veri eklediginde veya çikardiginda yani herhangi bir transaction gerçeklestiginde diger programin bundan haberdar olmasini nasil saglayabilirim?
belli zaman araliklariyla yani timer altinda table i açıp kapayarak denildigini duyar gibiyim :) ama bu yöntemle timerin intervalini düşük tutmam gerekir. Buda programi hantallaştırıyor...
Farklı bir yöntem olarak ne uygulayabilirim?
Kullanıcı avatarı
naile
Admin
Mesajlar: 1873
Kayıt: 11 Haz 2003 10:11

Mesaj gönderen naile »

Ben de değidiğin yöntemin dışında daha kullanışlı bir yöntem varsa sinema programıma uygulayayım bari :D
P206
Kıdemli Üye
Mesajlar: 395
Kayıt: 17 Haz 2003 12:36
Konum: İstanbul

Mesaj gönderen P206 »

Merhaba,

Benim aklıma gelen yontem Client , server programları gibi birer socket kullanarak 127.0.0.1 den istediğin portan ben transaction gerçekleştirdim şeklinde diğerine bir uyarı yollamasıdır.


Kolay gelsin.
Kullanıcı avatarı
mussimsek
Admin
Mesajlar: 7602
Kayıt: 10 Haz 2003 12:26
Konum: İstanbul
İletişim:

Mesaj gönderen mussimsek »

Merhaba,

eğer Interbase kullanılıyor iseniz P206'nın önerdiği yöntem işe yarar. Kayıt gerçekleştiği zaman bir mesaj yayınlarsınız, bu mesaj tüm client'lara iletilir. IBEvent ile bu mesajı yakalayıp, refresh edeblirsiniz.

Kolay gelsin.
Kullanıcı avatarı
naile
Admin
Mesajlar: 1873
Kayıt: 11 Haz 2003 10:11

Mesaj gönderen naile »

Peki SQL Server için bir yöntem varmıdır? :roll:
Kullanıcı avatarı
şimal
Kıdemli Üye
Mesajlar: 516
Kayıt: 10 Kas 2003 09:36
Konum: ANKARA

Mesaj gönderen şimal »

Evet arkadaslar... Cidden hic aklima gelmemisti... Dediginiz gibi interbase kullaniyorum....
Sagolun saglicakla kalin...
Kullanıcı avatarı
gkimirti
Admin
Mesajlar: 1956
Kayıt: 02 Eyl 2003 04:44
Konum: İstanbul

Mesaj gönderen gkimirti »

bu mesaj yayınlama olayı interbase de nasıl oluyor
bilenler bi anlatabilirmi?
belki bende ilerde kullanmak isterim
ÜŞENME,ERTELEME,VAZGEÇME
Kullanıcı avatarı
rsimsek
Admin
Mesajlar: 4482
Kayıt: 10 Haz 2003 01:48
Konum: İstanbul

Mesaj gönderen rsimsek »

Şöyle birşey yapılabilir;

Her iki programında ulaşabildiği bir klasörde bir text/ini/table açılarak programlardan herhangi biri bir kayıt yaptığında bu dosya veya tabloya kendi adını yazar. Her ikisinde de 1 sn.lik timer lar hazırlanır. Eğer kendi adı var ise es geçer. Diğer program tabloda bir kayıt okur ve kendi adı haricinde bir şey ise okuduğu tabloları refresh eder veya close/open eder ve ara dosya/tablodaki bilgiyi siler.

Pratik olarak kullanılabileceğini düşünüyorum.
Kullanıcı avatarı
mussimsek
Admin
Mesajlar: 7602
Kayıt: 10 Haz 2003 12:26
Konum: İstanbul
İletişim:

Mesaj gönderen mussimsek »

gkimirti yazdı:bu mesaj yayınlama olayı interbase de nasıl oluyor
bilenler bi anlatabilirmi?
belki bende ilerde kullanmak isterim
Merhaba,

bir procedure yazıp, POST_EVENT ile o veritabanına bağlı tüm client'lara mesaj gönderebilirsin.

Kolay gelsin.
okay
Üye
Mesajlar: 6
Kayıt: 04 Tem 2004 09:55

mesajın yayını termınaldekı tablonun refresh i (post event)

Mesaj gönderen okay »

post event ıle mesaj yayınlanması ve bu mesajın termınalden yakalanarak tablonun refresh edılmesı
bu nasıl yapılabılır
delphı ib konusunda bıraz tecrubesızımde
yardımınızı beklıorum

"bir procedure yazıp, POST_EVENT ile o veritabanına bağlı tüm client'lara mesaj gönderebilirsin.
Kolay gelsin"
Kullanıcı avatarı
TRSoft
Kıdemli Üye
Mesajlar: 636
Kayıt: 13 Şub 2004 11:39
Konum: Konya
İletişim:

Mesaj gönderen TRSoft »

@okay

veritabanın eğer IB/FB ise bir procedure veya triggerda

Kod: Tümünü seç

post event 'MESAJADI'
şeklinde mesaj yayınlayabilirsin ve delphi tarafında IBEvent componenti ile bu mesajı yakalayabilirsin mesajı IbEventa register etmen gerekiyor ve daha sonra IBEventın OnEventAlert yordamında mesajı yakalayıp tablolarını refresh ettirebilirsin..
İlimle geçen bir gece,
ibadetle geçen bin geceden hayırlıdır.
HZ. MUHAMMED (S.A.)
okay
Üye
Mesajlar: 6
Kayıt: 04 Tem 2004 09:55

Mesaj gönderen okay »

ellerinize salık bu yardımlar cok işime yarıyor
ama eksık kalan bı nokta var daha dorusu beceremedıgım
(veritabanı ıb)
" procedure veya triggerda " ne demek
yanı nası yapıcam :oops:
Kullanıcı avatarı
mussimsek
Admin
Mesajlar: 7602
Kayıt: 10 Haz 2003 12:26
Konum: İstanbul
İletişim:

Mesaj gönderen mussimsek »

okay yazdı:" procedure veya triggerda " ne demek
yanı nası yapıcam :oops:
Arama kısmından aratacaksınız ve forumun bu konuda bilgilerle dolu olduğunu, bu konuda birçok makale ve seminer olduğunu göreceksiniz. Bunları okuyarak, seminerleri dinleyerek ne neymiş, nasıl yapılırmış öğreneceksiniz ;) Bize de dua edeceksiniz :)

Kolay gelsin.
Kullanıcı avatarı
akgun83
Üye
Mesajlar: 106
Kayıt: 26 Eyl 2003 11:34

Mesaj gönderen akgun83 »

naile yazdı:Peki SQL Server için bir yöntem varmıdır? :roll:
Serversocket ve clientsocket kullanarak delphi tarafından halletmek.
Kullanıcı avatarı
nitro
Üye
Mesajlar: 1112
Kayıt: 23 Ağu 2004 01:18
Konum: Çanakkale
İletişim:

Mesaj gönderen nitro »

s.a.
konu çok eski ama ben daha yeni bu olaya girdim.
firebird kullanıyorum. programımı ağ üzerinde çalışacak şekilde ayarladım.
clientlerin database pathi 10.0.0.40:c:\aaa.gbd şeklinde
programlar çalışıyor. ayrıca programlarda her insert-update-delete olayından sonra ibtransaction1.commitretining; kodu var.
ama herhangi bir bilgisayarda yapılan insert-update-delete işlemi diğer bilgisayarlarda (programı kapatıp açmadıkça) gözükmüyor.

yukarıda yazılanları okudum.
client-server socket de kullansam tableları kapatıp aömak şart sanırım.
table1.refresh; gibi bir komut ne kadar etkili anlayamadım.

hadi diyelim client server socket kullandım. bir bilgisayar insert-update-delete işlemi yaptı. ve diğer makinelere dedi ki "ben bi işlem yaptım. tabloları kapatıp açın da onu görün".
bu ne kadar tutarlı bir sistemdir?
dos altında çalışan programlar gördüm. ağ üzerinde mükemmel çalışıyorlardı. sistem o kadar gelişti. ama çaresiz mi kaldık?

doğrusu nedir?
nasıl yapılmalıdır?

paylaşılan her bilgi için şimdiden teşekkürler.
saygılarımla..
aeo (allaha emanet olun)
Cevapla