yazdığımız programı client olarak birden fazla çalıştırmak

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
kodcuminik
Üye
Mesajlar: 140
Kayıt: 11 Oca 2009 10:25

yazdığımız programı client olarak birden fazla çalıştırmak

Mesaj gönderen kodcuminik »

mssql server 2005 ile yazdığım programı
client olarak başka bir yerde de çalışmasını isityorum

aynı anda bilgi girişi yapılacak bunun mantığı nedir nasıl yapmalıyız püf noktaları nelerdir çünkü aynı anda aynı tablolara bilgi işlenecek
bilmezler bilmediklerinide bilmezler ama kendilerini bilir sanırlar
ikutluay
Üye
Mesajlar: 2341
Kayıt: 03 Tem 2007 10:13

Re: yazdığımız programı client olarak birden fazla çalıştırm

Mesaj gönderen ikutluay »

programının database bağlantısını dışardan değişir hale getirmelisin. arada adsl varsa NAT işlemide gerekecektir.
Kişi odur ki, koyar dünyada bir eser. Eseri olmayanın yerinde yeller eser./Muhammed Hadimi
http://www.ibrahimkutluay.net
http://www.ibrahimkutluay.net/blog
kodcuminik
Üye
Mesajlar: 140
Kayıt: 11 Oca 2009 10:25

Re: yazdığımız programı client olarak birden fazla çalıştırm

Mesaj gönderen kodcuminik »

hayır hocam programı 3 4 kullanıcı local ağda kullandırmak istiyorum yani yandaki bilgisayardaki kullanıcı da evrak işleyecek ana bilgisayar da
bilmezler bilmediklerinide bilmezler ama kendilerini bilir sanırlar
Kullanıcı avatarı
sabanakman
Kıdemli Üye
Mesajlar: 3077
Kayıt: 17 Nis 2006 08:11
Konum: Ah bi Antalya olaydı keşke (Ankara)

Re: yazdığımız programı client olarak birden fazla çalıştırm

Mesaj gönderen sabanakman »

Burada programın SQL Server yüklü makinada olması ya da başka bir makinada olmasının bir esprisi yoktur. Mantık olarak sunucu program olan SQL Server'dır, buraya kayıt yapan, sorgulayan programınız ise istemci programdır. Size düşen programınızda bazı noktalara dikkat ederek program geliştirmek o kadar (Çok aşırı miktarda kaydı birden bire açmamak, belirli aralıklarla verileri güncellemek v.b.). Kısacası SQL Server'a bağlantı kurup çalışan programlar istemciden ibarettir.
Şaban Şahin AKMAN
_________________
Derin olan kuyu değil kısa olan iptir. - .
kodcuminik
Üye
Mesajlar: 140
Kayıt: 11 Oca 2009 10:25

Re: yazdığımız programı client olarak birden fazla çalıştırm

Mesaj gönderen kodcuminik »

hocam aynı ağda aynı exe ile sunucu adı ve bilgilerini girdirerek bağlanıyorum o aşamada sorunum yok

aslında bilgi eksikliği şurda şöyle sorayım

2 kullanıcı aynı anda bağlanıp müşteriler tablosuna aynı anda kayıt girebilirmi sql server o aşamada kendisimi sırayı kontrol eder

1 kullanıcı aynı tabloda insert durumunda iken öbürü ne yapar

1 kullanıcı rapor çekerken öbür kullanıcının durumu nice olur gibi aslında sorun burda

teşekkürler
bilmezler bilmediklerinide bilmezler ama kendilerini bilir sanırlar
kodcuminik
Üye
Mesajlar: 140
Kayıt: 11 Oca 2009 10:25

Re: yazdığımız programı client olarak birden fazla çalıştırm

Mesaj gönderen kodcuminik »

yani kayıt aşamasında akışı nasıl kontrol ederiz sonra tabloyu bozmayalım yada telafisi olmayan haller olmasın bunun çalışma şekli yoksa program aynı program :)
bilmezler bilmediklerinide bilmezler ama kendilerini bilir sanırlar
Kullanıcı avatarı
sabanakman
Kıdemli Üye
Mesajlar: 3077
Kayıt: 17 Nis 2006 08:11
Konum: Ah bi Antalya olaydı keşke (Ankara)

Re: yazdığımız programı client olarak birden fazla çalıştırm

Mesaj gönderen sabanakman »

Bu olaylar (aynı tabloya kayıt) nedeniyle sorun yaşamazsınız. En kötü olasılıkla aynı tabloyu geçtik, aynı kayıt satırını düzeltme anında işlemlerden birisi çalışır diğer kayıt işlemi gerçekleşmez. Yeni kayıt aşamasını "ADOTable.Append; .... .... .... ADOTable.Post;" şeklinde append ve post bir click içinde kodlanmışsa transaction başlatmanız daha sağlıklı kayıt yapmanızı sağlayacaktır.

Kod: Tümünü seç

try
  ADOConnection.BeginTrans;
  ADOTable.Append;//veya ADOTable.Edit;
....
....
....
  ADOTable.Post;
  ADOConnection.CommitTrans;//işlem anında hata oluşmazsa değişiklikler uygulanır
except
  ADOConnection.RollbackTrans;//işlem anında hata çıkarsa bütün değişiklikler geri alınır, hiç kayıt olmamış gibi devam eder
end;
Burada dikkat edilmesi gereken nokta, BeginTrans ile başlatılan işlemden sonra hangi tabloda işlem yapıldıysa, CommitTrans veya RollbackTrans çalıştırılana kadar o tablolara erişim diğer kullanıcılar tarafından sağlanamaz.
Şaban Şahin AKMAN
_________________
Derin olan kuyu değil kısa olan iptir. - .
kodcuminik
Üye
Mesajlar: 140
Kayıt: 11 Oca 2009 10:25

Re: yazdığımız programı client olarak birden fazla çalıştırm

Mesaj gönderen kodcuminik »

teşekkürler hocam
yani diyorsunuz ki aynı satır üzerinde olmadığı sürece isterse 10 kişi aynı anda kayıt girsin problem olmaz onun için herhangi bir komplo teorisi yazmaya gerek yok bu aynı şekilde kayıtlar üzerinde gezerkende geçerli değilmi hocam yani istisnayi bir durum yok nede olsa network üzerinde çalışıyor belki atladığım bir nokta vardır bunun haricinde bir durum söz konusu olabilirmi bozulma yada çalışma anında hataya sebep verebilecek bir durum vs
bilmezler bilmediklerinide bilmezler ama kendilerini bilir sanırlar
Kullanıcı avatarı
bobasturk
Kıdemli Üye
Mesajlar: 1387
Kayıt: 20 May 2004 08:39
Konum: Düzce

Re: yazdığımız programı client olarak birden fazla çalıştırm

Mesaj gönderen bobasturk »

merhaba,

pek üstünde durmadım bu yüzden tam olarak cevap olmayacak size ama şu konuyu dikkat etsen gerisini günümüzün vt leri zaten yapıyor.

birden fazla kullanıcı çalışma anında aynı kayıt üzerinde işlem yapmaya başladığında kaydı ilk açan malı götürsün. diğerlerine uyarı mesajı ver. kayıt şu an kullanılıyor sen sonra gel diye. çünkü gerekli ayarlar yapılmamışsa dataset kaydı çektiğinde her iki kullanıcı işlem yapıyor ve son kaydet diyen kullanıcının verilerini kaydediyor. haliyle ilk kaydı değiştiren kişi kontrol ettiğinde şaşkın şaşkın ekrana bakıyor yazdıklarım nereye gitti diye :)

kolay gelsin
Şefkat-u Merhamette Güneş Gibi Ol.
Başkalarının Kusurunu Örtmekte Gece Gibi Ol.
Sehavet-u Cömertlikte Akarsu Gibi Ol.
Hiddet-u Asabiyette Ölü Gibi Ol.
Tevazu-u Mahviyette Toprak Gibi Ol.
Ya Olduğun Gibi Görün Ya Göründüğün Gibi Ol.

Resim
kodcuminik
Üye
Mesajlar: 140
Kayıt: 11 Oca 2009 10:25

Re: yazdığımız programı client olarak birden fazla çalıştırm

Mesaj gönderen kodcuminik »

evet hocam şaban akman hocamın delphi dünyasındaki cevaplarınıda buldum bu konu ile ilgili tüm selectlerde with nolock kullanacağım sizin önerinizde suyun başına ilk önce kim geçerse o içsin suyu ama o satırın insert durumunda olup olmadığını nasıl öğrenebilirim hangi event işimi görür acizane
bilmezler bilmediklerinide bilmezler ama kendilerini bilir sanırlar
Cevapla