Server - Client ve Offline Çalışma

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
Ali Erdoğan
Kıdemli Üye
Mesajlar: 1026
Kayıt: 11 Şub 2005 02:12
Konum: İstanbul

Server - Client ve Offline Çalışma

Mesaj gönderen Ali Erdoğan »

Merhaba,
Geliştirdiğim bir projede şehirdeki farklı şubelerde kullanılan terminalleri ortak bir veri tabanına bağlamak istiyorum.Şu ana kadar sql server kullandım ve internet üzerinden bağlantıyı yapmayı düşünüyorum.Asıl sıkıntım ise internet bağlantısı olmadan da terminallerin offline çalışıp en azından verilerin son halini görebilmeleri. Bunu nasıl gerçekleştirebilirim?

Teşekkürler
fduman
Moderator
Mesajlar: 2749
Kayıt: 17 Ara 2004 12:02
Konum: Ankara

Mesaj gönderen fduman »

bkz. :ara ClientDataset, Briefcase Model.
Ali Erdoğan
Kıdemli Üye
Mesajlar: 1026
Kayıt: 11 Şub 2005 02:12
Konum: İstanbul

Mesaj gönderen Ali Erdoğan »

Forumda bi hayli arama yaptım fakat bu konu ile ilgili bir bilgi bulamadım.
Briefcase Model konusunu biraz açar mısın?
fduman
Moderator
Mesajlar: 2749
Kayıt: 17 Ara 2004 12:02
Konum: Ankara

Mesaj gönderen fduman »

bkz. Delphi Help
Kullanıcı avatarı
sadettinpolat
Moderator
Mesajlar: 2131
Kayıt: 07 Ara 2003 02:51
Konum: Ankara
İletişim:

Mesaj gönderen sadettinpolat »

ClientDataset, Briefcase Modeline artı olarak varolan yapınızda şöyle bir yol kullanabilirsiniz.

iki veritabanınız olur.
1. si ana merkezdeki db
2. si terminaldeki.

kullanıcı bilgilerini 2. ye girer. yazacağınız bir programda bu bilgileri 1. dbye gönderir. bu işlemi yapabilmek içinde doğal olarak tablodaki alanlara durum diye bir alan koyup burdaki verilere göre hareket etmeniz gerekecek.

yani bir çeşit Briefcase yöntemini manuel yapmak gibi birşey.
"Sevmek, ne zaman vazgececegini bilmektir." dedi, bana.

---
http://sadettinpolat.blogspot.com/
oguzozturk74
Kıdemli Üye
Mesajlar: 574
Kayıt: 01 Şub 2004 12:29
Konum: Erdemli - MERSİN

Mesaj gönderen oguzozturk74 »

Saadettin hocam , önerdiğin yöntem ile ilgili eğer mümkünse biraz daha açıklayıcı bilgi verebili misin?

Teşekkürler...
Kullanıcı avatarı
sadettinpolat
Moderator
Mesajlar: 2131
Kayıt: 07 Ara 2003 02:51
Konum: Ankara
İletişim:

Mesaj gönderen sadettinpolat »

Interbase için konuşursak arka planda çalışan bir programım var. bu program hem yerel hemde uzak veritabanına bağlı. veritabanında ise bütün tabloların after insert ve after update olaylarında tablonun adını sisteme mesaj olarak geçen bir trigger mevcut. yerel tabloada her hangi bir update veya insert olduğunda program bu mesajı yakalayıp tablo adını alıyor. daha sonra ilgi ttablodaki kayıtların Durum alanı 0 olanları (yeni eklenmiş) insert into komutuyla uzak veritabanına kaydediyor ve durum alanını -1 yapıyor(uzak veritabanına gönderildi). ardından durum alanı 1 olanları (update edilmiş) alıp bunlar içinde düzgün update sqllerini oluşturup uzak veritabanına gönderiyor ve durum alanını -1 yapıyor(uzak veritabanına gönderildi).

Genel mantık bu şekilde ama bazı pürüzler de çıkıyor. mesela yeni kaydı uzak veritabanına insert ettikten sonra durum alanına -1 yazarken bu sefer after update triggeri devreye girerek bu alanı 1 yapmaya çalışıyor. bu gibi problemlerin önüne gçemek için extra birşeyler kullanmak gerekebiliyor.

Kod: Tümünü seç

if new.Durum <> -1 gibi Then
  new.Durum = 1
gibi.
"Sevmek, ne zaman vazgececegini bilmektir." dedi, bana.

---
http://sadettinpolat.blogspot.com/
oguzozturk74
Kıdemli Üye
Mesajlar: 574
Kayıt: 01 Şub 2004 12:29
Konum: Erdemli - MERSİN

Mesaj gönderen oguzozturk74 »

Sağolasın hocam .

Teşekkürler :)
fduman
Moderator
Mesajlar: 2749
Kayıt: 17 Ara 2004 12:02
Konum: Ankara

Mesaj gönderen fduman »

sadettin replication'dan bahsediyor zannedersem veya benzer bir yaklaşımdan.
Ali Erdoğan
Kıdemli Üye
Mesajlar: 1026
Kayıt: 11 Şub 2005 02:12
Konum: İstanbul

Mesaj gönderen Ali Erdoğan »

Bu şekil bir yolu ben de düşündüm fakat projede 70 den fazla table bileşeni var.

Her biri için bu şekil bir yöntemi hatasız bir şekilde yürütmek mümkün gözükmüyor.Yeni bulduğum yöntem şöyle:

Projede Access kullanacağım.Makinelerden birine sabit ip alacağız ve iki makine yine birbirine bağlantılı çalışacak.İsterse Terminaller bu access veri tabanını bilgisayarlarına indirerek offline çalışabilecekler.

Sizce bunun gibi bir sistemin sakıncaları ne olabilir?Bir de veri tabanının otomatik olarak download ını nasıl sağlarım?
Cevapla