Konuyu Oyla:
  • Derecelendirme: 0/5 - 0 oy
  • 1
  • 2
  • 3
  • 4
  • 5
ADOQuery MemTable Gibi Kullanılabilir mi
#1
Merhaba,

ADOQuery yeni bir hesaplanabilir alan oluşturduğumda bu alana bilgi girdiğimde haliyle yeni satıra geçtiğimde hesaplanabilir alandaki veri kayboluyor. Bunun kaybolmamasını sağlamanın MemTable haricinde bir yolu var mıdır.

Örn;
Bir ürün listesi olduğunu ve bununda grid üzerinden gösterildiğini düşünün. ADOQuery  üzerindeki Select cümlesinde olmayan bir alanı (Miktar)
Calculated olarak ekledikten sonra Kullanıcıya bu alana her satır için veri girdirmek amacındayım sonrasında bunu başka işlemlere tabi tutacağım. Şu durumda bir alt satıra geçtiğimde hesaplanabilir alandaki veri kayboluyor.

*Memtable ile yapmamın nedeni tüm ürün listesi çok fazla ve kullanıcı devamlı arama yaptırıyor, devamlı memtable ekle/çıkar işlemleri yapıp performans sorunu yaşamak istemiyorum.

D9co0Ap.png

Teşekkürler.
Cevapla
#2
Tam anlamadım ama amaç olmayan bir alana veri girdirmek ise Temp Table kullanabilirsiniz.
Yalnızım ama bir kente yürüyen ordu gibiyim, edebiyattan kaçınmalıyım..
Cevapla
#3
(01-05-2019, Saat: 17:57)narkotik Adlı Kullanıcıdan Alıntı: Tam anlamadım ama amaç olmayan bir alana veri girdirmek ise Temp Table kullanabilirsiniz.

TempTable = MemTable; Bununla yapmadan nasıl yapılabilir mi diye sormuştum.

*10 bin kayıt düşünün kullanıcı her arama yaptıkça bu sayı artıp eksiliyor her arama olayının sonucunda memtable doldurmak çok sağlıklı değil.
Cevapla
#4
(01-05-2019, Saat: 18:06)pro_imaj Adlı Kullanıcıdan Alıntı:
(01-05-2019, Saat: 17:57)narkotik Adlı Kullanıcıdan Alıntı: Tam anlamadım ama amaç olmayan bir alana veri girdirmek ise Temp Table kullanabilirsiniz.

TempTable = MemTable; Bununla yapmadan nasıl yapılabilir mi diye sormuştum.

*10 bin kayıt düşünün kullanıcı her arama yaptıkça bu sayı artıp eksiliyor her arama olayının sonucunda memtable doldurmak çok sağlıklı değil.

SQL'de temp table oluşturmaktan bahsediyordum
Yalnızım ama bir kente yürüyen ordu gibiyim, edebiyattan kaçınmalıyım..
Cevapla
#5
MemTable kullanmadan çözülmeyeceği sonucuna ulaşınca; Memtable ile sorunu şu şekilde çözmüş oldum.

Tüm veriyi bir defaya mahsus MemTable'ye aktarıyorum, sonrasında arama işlemlerini MemTable Filtering üzerinden yapıyorum. 

İyi çalışmalar.
Cevapla
#6
(01-05-2019, Saat: 17:03)pro_imaj Adlı Kullanıcıdan Alıntı: Merhaba,

ADOQuery yeni bir hesaplanabilir alan oluşturduğumda bu alana bilgi girdiğimde haliyle yeni satıra geçtiğimde hesaplanabilir alandaki veri kayboluyor. Bunun kaybolmamasını sağlamanın MemTable haricinde bir yolu var mıdır.

Örn;
Bir ürün listesi olduğunu ve bununda grid üzerinden gösterildiğini düşünün. ADOQuery  üzerindeki Select cümlesinde olmayan bir alanı (Miktar)
Calculated olarak ekledikten sonra Kullanıcıya bu alana her satır için veri girdirmek amacındayım sonrasında bunu başka işlemlere tabi tutacağım. Şu durumda bir alt satıra geçtiğimde hesaplanabilir alandaki veri kayboluyor.

*Memtable ile yapmamın nedeni tüm ürün listesi çok fazla ve kullanıcı devamlı arama yaptırıyor, devamlı memtable ekle/çıkar işlemleri yapıp performans sorunu yaşamak istemiyorum.

D9co0Ap.png

Teşekkürler.

Merhaba, siz bir memory table kullanımını seçmişsiniz ama ben yine de belki faydası olur diye bazı hususlardan bahsedeyim. TADOQuery'yi bir memory table gibi kullanabilirsiniz. Bunun için ilgili dataset'i açtıktan sonra Connection property'sine nil değerini atamanız yeterli olur. Ancak mesajınızda gözlemlediğim hatalı bir durum var, onu da belirtmek isterim. Hesaplanan (calculated) alanların kullanıcı müdahalesi ile değiştirilmemesi gerekir. Bu hatalı bir yaklaşım, adı üstünde hesaplanan/nihai alan. Ama elbette ilgili Query nesnesine sanal bir data alan eklerseniz, bu durumda Query açılır iken bu alanın bulunamadığı yönünde bir hata alırsınız. Calculated ya da Lookup seçenekleri'nin de farklı amaçlara hizmet etmesinden ötürü elde tek seçenek kalıyor. Query içindeki SQL ifadesine sanal bir alan eklemeniz. Ancak bu sanal alan bağlantısız model'de nasıl davranır tam emin değilim, test etmek icap eder.

 İşi gerçekten de memory'de çalışmak olan nesnelere yönelmek daha faydalı olabilir. (TClientDataset, TdxMemData vb..)
Mal sahibi, mülk sahibi
Hani bunun ilk sahibi ?
Mal da yalan mülk de yalan
Var biraz da sen oyalan...
WWW
Cevapla
#7
(02-05-2019, Saat: 09:05)Tuğrul HELVACI Adlı Kullanıcıdan Alıntı:
(01-05-2019, Saat: 17:03)pro_imaj Adlı Kullanıcıdan Alıntı: Merhaba,

ADOQuery yeni bir hesaplanabilir alan oluşturduğumda bu alana bilgi girdiğimde haliyle yeni satıra geçtiğimde hesaplanabilir alandaki veri kayboluyor. Bunun kaybolmamasını sağlamanın MemTable haricinde bir yolu var mıdır.

Örn;
Bir ürün listesi olduğunu ve bununda grid üzerinden gösterildiğini düşünün. ADOQuery  üzerindeki Select cümlesinde olmayan bir alanı (Miktar)
Calculated olarak ekledikten sonra Kullanıcıya bu alana her satır için veri girdirmek amacındayım sonrasında bunu başka işlemlere tabi tutacağım. Şu durumda bir alt satıra geçtiğimde hesaplanabilir alandaki veri kayboluyor.

*Memtable ile yapmamın nedeni tüm ürün listesi çok fazla ve kullanıcı devamlı arama yaptırıyor, devamlı memtable ekle/çıkar işlemleri yapıp performans sorunu yaşamak istemiyorum.

D9co0Ap.png

Teşekkürler.

Merhaba, siz bir memory table kullanımını seçmişsiniz ama ben yine de belki faydası olur diye bazı hususlardan bahsedeyim. TADOQuery'yi bir memory table gibi kullanabilirsiniz. Bunun için ilgili dataset'i açtıktan sonra Connection property'sine nil değerini atamanız yeterli olur. Ancak mesajınızda gözlemlediğim hatalı bir durum var, onu da belirtmek isterim. Hesaplanan (calculated) alanların kullanıcı müdahalesi ile değiştirilmemesi gerekir. Bu hatalı bir yaklaşım, adı üstünde hesaplanan/nihai alan. Ama elbette ilgili Query nesnesine sanal bir data alan eklerseniz, bu durumda Query açılır iken bu alanın bulunamadığı yönünde bir hata alırsınız. Calculated ya da Lookup seçenekleri'nin de farklı amaçlara hizmet etmesinden ötürü elde tek seçenek kalıyor. Query içindeki SQL ifadesine sanal bir alan eklemeniz. Ancak bu sanal alan bağlantısız model'de nasıl davranır tam emin değilim, test etmek icap eder.

 İşi gerçekten de memory'de çalışmak olan nesnelere yönelmek daha faydalı olabilir. (TClientDataset, TdxMemData vb..)
Connection nil ataninca local dataset gibi kullanilabildigini bende bilmiyordum bir deneyim bazı durumlarda gercekten gerekli oluyor
Yalnızım ama bir kente yürüyen ordu gibiyim, edebiyattan kaçınmalıyım..
Cevapla


Konu ile Alakalı Benzer Konular
Konular Yazar Yorumlar Okunma Son Yorum
  AdoQuery ile ilgili bir sorun. (Çözüldü) Bay_Y 4 119 17-04-2024, Saat: 10:58
Son Yorum: Bay_Y
  Delphi virus gibi deutsch1988 11 491 12-04-2024, Saat: 17:36
Son Yorum: deutsch1988
  Firedac MemTable Sort erkankurtaga 8 1.835 11-04-2022, Saat: 13:47
Son Yorum: masteryoda
  AdoQuery ParamByName parameter not found hatası rohleder00 5 1.564 05-04-2022, Saat: 15:26
Son Yorum: ugorkem
  adoquery stored proc çalıştırma sorunu hk. delhici 7 1.576 09-11-2021, Saat: 23:17
Son Yorum: mkysoft



Konuyu Okuyanlar: 1 Ziyaretçi