Dataset Kopmaları hakkında

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
Kullanıcı avatarı
adelphiforumz
Üye
Mesajlar: 602
Kayıt: 01 Nis 2008 05:38
Konum: İstanbul

Dataset Kopmaları hakkında

Mesaj gönderen adelphiforumz »

Selamlar

Bir pencere dataset'e bağlı 25-30 adet field olduğununda operatör ekranda bir işlem yaparken veri bağlantısı koparsa operatörün girdiği
tüm veriler kayboluyor.
Veriyi alıp tektek normal db olmayan nesnelere taşıyıp işlem yaptığımdada kod fazlalığı oluşuyor.

acaba datasete bağlı durumdaki bir alanı veri bağlantısı kopsada cach'lenebilecek bir yöntem mevcutmudur.
bağlantı tekrar yapıldığında post işleminde ekrandaki sahalarda bulunan veri kaybolmasa.

teşekkürler
Ehil olmayanlara sabretmek ehil olanları parlatır.
Akıllı birisinden gelen cefa, bilgisizlerin vefasından iyidir.
Bilgiye ulaştı mı ayak, kanat olur
Biz insanı kıyafetiyle ağırlar bilgisiyle uğurlarız.
Mevlana
Kullanıcı avatarı
xozcanx
Üye
Mesajlar: 362
Kayıt: 05 Oca 2012 12:55

Re: Dataset Kopmaları hakkında

Mesaj gönderen xozcanx »

Merhaba,
Kendi kullandığım yöntemi anlatayım belki farklı fikirler de gelir bende farklı bir bakış açısı görmüş olurum :)

Kayıt işlemini yapmadan önce hazırladığım function ile 2. bir connection ile bağlantı olup olmadığını kontrol ediyorum eğer sunucu ile bağlantı sağlarsam True değeri dönüyor kayıt işlemine geçiyorum False değeri döner ise kullanıcıya mesaj vererek bilgilendiriyorum. ;)

İyi çalışmalar.
Nasibinde varsa, alırsın karıncadan bile ders, Nasibinde yoksa, bütün cihan önüne serilse, sana ters..
thelvaci
Kıdemli Üye
Mesajlar: 770
Kayıt: 11 Tem 2010 07:17
Konum: Istanbul
İletişim:

Re: Dataset Kopmaları hakkında

Mesaj gönderen thelvaci »

Ben de kendi yöntemimi özetleyeyim. Veritabanı bağlantısı üzerinden elde ettiğim dataları memory dataset içine atıyorum. Bu arada arka plandaki bir thread veritabanı bağlantısını/network bağlantısını sıklıkla kontrol ediyor. Bağlantının koptuğu anlaşılır ise ekrana bir bağlantı koptu ekranı çıkıyor ve kullanıcı hiç bir müdahalede bulunamıyor. Arka plandaki thread bağlantı geldiğinde otomatikman öndeki ekranı kapatıyor ve Connection nesnesini kapatıp-açıyor. Kullanıcı bilgileri memory dataset'te tutulduğu için kopmalardan etkilenilmiyor, kaybolan veri olmuyor.

Memory dataset'teki bilgileri de stored procedure'lere parametre olarak geçtiğim için hiç bir sorunum kalmıyor.
Kullanıcı avatarı
kimimben
Üye
Mesajlar: 129
Kayıt: 28 Oca 2016 04:41
Konum: İstanbul

Re: Dataset Kopmaları hakkında

Mesaj gönderen kimimben »

Datasete veriyi girdikçe, girilen verinin fieldname ve value değerleri, bir TDictionary nesnesinde key/value olarak saklanabilir.

Daha sonra Post etmeden önce,TDictionary'den okunan değerler datasete tekrar yazılabilir.
CachePost; gibi TDatasete extension method yazılabilinir belki...
Kullanıcı avatarı
adelphiforumz
Üye
Mesajlar: 602
Kayıt: 01 Nis 2008 05:38
Konum: İstanbul

Re: Dataset Kopmaları hakkında

Mesaj gönderen adelphiforumz »

Herkese paylaşımları için teşekkürler
bu işin arabir veri alanına yükleme yapmadan olması lazım diye düşünüyorum
belirtiğiniz yöntemler hep ek kodlamaya dayalı yöntemler.
Benim yapmaya çalıştığım beforepost alanında kontroleri yapıp gerisini
Ado ve sql'e bırakmak böylece sadece değişen alanlar üzerinde daha hızlı işlem yapılmış olacaktır diye düşünüyorum.
Fikir Fikirdir yinede üzerinde düşünmekte fayda var bukonunun bence.
Ehil olmayanlara sabretmek ehil olanları parlatır.
Akıllı birisinden gelen cefa, bilgisizlerin vefasından iyidir.
Bilgiye ulaştı mı ayak, kanat olur
Biz insanı kıyafetiyle ağırlar bilgisiyle uğurlarız.
Mevlana
Kullanıcı avatarı
sabanakman
Kıdemli Üye
Mesajlar: 3081
Kayıt: 17 Nis 2006 08:11
Konum: Ah bi Antalya olaydı keşke (Ankara)

Re: Dataset Kopmaları hakkında

Mesaj gönderen sabanakman »

Belki 3. parti bileşenlerde bu tür özellikleri basit bir kaç ayar ile kolay sunuluyor olabilir onlara bir bakmak gerekebilir. TCustomADODataSet temelli bileşenlere gelince bunlarda da SaveToFile ve LoadFromFile özellikleri bulunmaktadır. Bir kopma anında SaveToFile ile mevcut dataset'i kayıt ettikten sonra LoadFromFile ile yükleyebilir ve bağlantı kurmaya gerek kalmadan bu tablodaki kayıtlar üzerinde çalışabilirsiniz. Bu çalışma bağlantı sağlandığı sırada ise UpdateBatch metodu ile yapılan değişiklikler veritabanına uygulanabilir.

Yaptığım basit test şu şekilde çalışmıştı..:
-Tabloyu SaveToFile ile kayıt ettim.
-Tabloyu (ADOTAble) ve bağlantıyı (ADOConnection) kapattım.
-Kayıt edilen tabloyu LoadFromFile ile yükleyip üzerinde değişiklikler yaptım.
-Bağlantıyı açtım ve UpdateBatch ile çalışmam veritabanına uygulandı.

Proje işlem adımlarınz hangi mantıkla ilerleyecekse bu yapıyı ona göre uyarlayabilirsiniz.
En son sabanakman tarafından 09 Eki 2016 09:14 tarihinde düzenlendi, toplamda 1 kere düzenlendi.
Şaban Şahin AKMAN
_________________
Derin olan kuyu değil kısa olan iptir. - .
Kullanıcı avatarı
csunguray
Üye
Mesajlar: 855
Kayıt: 09 Ara 2006 05:08
Konum: Adana
İletişim:

Re: Dataset Kopmaları hakkında

Mesaj gönderen csunguray »

Bağlantı için ADO bileşenleri yerine yeni kuşak FireDAC (eski adıyla AnyDAC) bileşenlerini kullanabilirsiniz. Bu bileşenler bağlantı kurtarma (Connectection Recovery) özelliği içermektedir.

Recovering Connection (FireDAC)
http://docwiki.embarcadero.com/RADStudi ... _(FireDAC)
C. Sunguray
csunguray at netbilisim.kom
Net Bilişim Hizmetleri

Sıradan her programcı bilgisayarın anlayabileceği kodlar yazabilir.
Sadece iyi programcılar insanların da anlayabileceği kodlar yazarlar.
Martin Fowler (http://martinfowler.com/)
Cevapla