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
  Çözüldü - AdoQuery $Unnamed does not contain a member named Hatası KarahanMesut 2 740 19-09-2020, Saat: 01:26
Son Yorum: KarahanMesut
  AdoQuery ikinci işleminde duruyor. guvenlik 3 834 12-08-2020, Saat: 13:55
Son Yorum: guvenlik
  Edit Kontrol DatePicker gibi Kullanma 3ddark 6 1.923 27-06-2020, Saat: 13:39
Son Yorum: mrmarman
  EHLIP Memtable Kullanımı ErcanT 2 1.337 28-04-2020, Saat: 09:49
Son Yorum: ErcanT
  Edit'i Combobox gibi kullanmak bünyamin68 7 3.208 19-09-2019, Saat: 22:20
Son Yorum: SimaWB



Konuyu Okuyanlar: 1 Ziyaretçi