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ı: Linkleri Görebilmeniz İçin Üye Olmanız Gerekiyor. Üye Olabilmek İçin Lütfen Buraya Tıklayınız.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ı: Linkleri Görebilmeniz İçin Üye Olmanız Gerekiyor. Üye Olabilmek İçin Lütfen Buraya Tıklayınız.
(01-05-2019, Saat: 17:57)narkotik Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Üye Olmanız Gerekiyor. Üye Olabilmek İçin Lütfen Buraya Tıklayınız.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ı: Linkleri Görebilmeniz İçin Üye Olmanız Gerekiyor. Üye Olabilmek İçin Lütfen Buraya Tıklayınız.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ı: Linkleri Görebilmeniz İçin Üye Olmanız Gerekiyor. Üye Olabilmek İçin Lütfen Buraya Tıklayınız.
(01-05-2019, Saat: 17:03)pro_imaj Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Üye Olmanız Gerekiyor. Üye Olabilmek İçin Lütfen Buraya Tıklayınız.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
  Edit'i Combobox gibi kullanmak bünyamin68 5 194 11-09-2019, Saat: 13:06
Son Yorum: SimaWB
  adoquery de rastgele seçim murtishow76 1 342 14-12-2018, Saat: 22:51
Son Yorum: SimaWB
  TreeViewi ListView gibi kullanma Dostk 0 448 10-07-2018, Saat: 16:04
Son Yorum: Dostk
  Video dosyasını duvar kağıdı gibi masaüstünde canlı çalıştırmak musdi42 6 1.343 09-05-2017, Saat: 22:18
Son Yorum: musdi42
  Üçüncü Parti Bileşen Kullanmadan MemTable Oluşturma pro_imaj 2 1.626 11-11-2016, Saat: 00:40
Son Yorum: pro_imaj



Konuyu Okuyanlar: 1 Ziyaretçi