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
Dataset Kopmaları hakkında
Forum kuralları
Forum kurallarını okuyup, uyunuz!
Forum kurallarını okuyup, uyunuz!
- adelphiforumz
- Üye
- Mesajlar: 602
- Kayıt: 01 Nis 2008 05:38
- Konum: İstanbul
Dataset Kopmaları hakkında
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
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
Re: Dataset Kopmaları hakkında
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.
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..
Re: Dataset Kopmaları hakkında
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.
Memory dataset'teki bilgileri de stored procedure'lere parametre olarak geçtiğim için hiç bir sorunum kalmıyor.
Re: Dataset Kopmaları hakkında
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...
Daha sonra Post etmeden önce,TDictionary'den okunan değerler datasete tekrar yazılabilir.
CachePost; gibi TDatasete extension method yazılabilinir belki...
- adelphiforumz
- Üye
- Mesajlar: 602
- Kayıt: 01 Nis 2008 05:38
- Konum: İstanbul
Re: Dataset Kopmaları hakkında
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.
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
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
- 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
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.
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. - .
_________________
Derin olan kuyu değil kısa olan iptir. - .
Re: Dataset Kopmaları hakkında
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)
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/)
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/)