Konuyu Oyla:
  • Derecelendirme: 0/5 - 0 oy
  • 1
  • 2
  • 3
  • 4
  • 5
DBLookupComboBox liste elemalarini arama
#1
Merhabalar,
DBLookupComboBox bileşeninde 100 lerce kayit olduğunda liste elamanları seçmesi daha dogrusu listeden istenilen kaydi bulmasi cok zor oluyor. combobox ta oldugu gibi DBLookupComboBox ta da arama yapilabilir mi acaba?
teşekkürler.
Cevapla
#2
(13-06-2018, Saat: 14:49)klavye Adlı Kullanıcıdan Alıntı: Merhabalar,
DBLookupComboBox bileşeninde 100 lerce kayit olduğunda liste elamanları seçmesi daha dogrusu listeden istenilen kaydi bulmasi cok zor oluyor. combobox ta oldugu gibi DBLookupComboBox ta da arama yapilabilir mi acaba?
teşekkürler.

Merhaba,

WHERE veya LIKE gibi komutlar yapılabilir. 100'lerce kayıt olması her GET işleminde yavaşlatma meydana getirebilir. Bu yüzden DBLookupCombobox nesnesinin önceden belleklediği kayıtlar içerisinde arama yapmak daha hızlı ve sabit sonuç verecektir. Bunun için DataSet üzerinden sorgu yapmanız daha iyi olacaktır.

Örnek Stackoverflow;

Procedure filterr(Dataset: TDataSet; const FieldName, SearchTerm: string);
begin
Assert(Assigned(Dataset), 'No dataset is assigned');

if SearchTerm = '' then
Dataset.Filtered := False
else
begin
Dataset.Filter := FieldName + ' LIKE ' + QuotedStr(SearchTerm + '*');
Dataset.Filtered := True;
end;
end;

Edit'in OnChange Olayına;

filterr(mytable;'fieldname';edit1.Text);

Yukarıda ki kodun oluşturucusu Raouf Rahiche.

Örnek kodu denemedim, sadece kodlara bakınca işinizi göreceğinizi umut ediyorum. Yine de bilgisayarım elime geçerse örneklendirme yaparım.


P.S: TDataSet sınıfı için "Data.DB" kütüphanesini kullanmanız gerekmektedir.

Saygılarımla,
İyi çalışmalar.
kisisel_logo_dark.png
WWW
Cevapla
#3
(13-06-2018, Saat: 15:00)hyperxman Adlı Kullanıcıdan Alıntı:
(13-06-2018, Saat: 14:49)klavye Adlı Kullanıcıdan Alıntı: Merhabalar,
DBLookupComboBox bileşeninde 100 lerce kayit olduğunda liste elamanları seçmesi daha dogrusu listeden istenilen kaydi bulmasi cok zor oluyor. combobox ta oldugu gibi DBLookupComboBox ta da arama yapilabilir mi acaba?
teşekkürler.

Merhaba,

WHERE veya LIKE gibi komutlar yapılabilir. 100'lerce kayıt olması her GET işleminde yavaşlatma meydana getirebilir. Bu yüzden DBLookupCombobox nesnesinin önceden belleklediği kayıtlar içerisinde arama yapmak daha hızlı ve sabit sonuç verecektir. Bunun için DataSet üzerinden sorgu yapmanız daha iyi olacaktır.

Örnek Stackoverflow;

Procedure filterr(Dataset: TDataSet; const FieldName, SearchTerm: string);
begin
Assert(Assigned(Dataset), 'No dataset is assigned');

if SearchTerm = '' then
Dataset.Filtered := False
else
begin
Dataset.Filter := FieldName + ' LIKE ' + QuotedStr(SearchTerm + '*');
Dataset.Filtered := True;
end;
end;

Edit'in OnChange Olayına;

filterr(mytable;'fieldname';edit1.Text);

Yukarıda ki kodun oluşturucusu Raouf Rahiche.

Örnek kodu denemedim, sadece kodlara bakınca işinizi göreceğinizi umut ediyorum. Yine de bilgisayarım elime geçerse örneklendirme yaparım.


P.S: TDataSet sınıfı için "Data.DB" kütüphanesini kullanmanız gerekmektedir.

Saygılarımla,
İyi çalışmalar.

Merhaba @"hyperxman" Öncelikle ilgine teşekkür ederim. Sanırım ben istediiğimi yanlış anlattım.
DBLookupComboBox icerisine yazıda yazamiyorum. oraya arama istediğim bir kac kelimeyi yazıp listeyi azaltmak istemistim.
Ama DBLookupComboBox secim seklinde ayarli. içerisine birsey yazamiyorum.
Cevapla
#4
(13-06-2018, Saat: 15:10)klavye Adlı Kullanıcıdan Alıntı:
(13-06-2018, Saat: 15:00)hyperxman Adlı Kullanıcıdan Alıntı: Merhaba,

WHERE veya LIKE gibi komutlar yapılabilir. 100'lerce kayıt olması her GET işleminde yavaşlatma meydana getirebilir. Bu yüzden DBLookupCombobox nesnesinin önceden belleklediği kayıtlar içerisinde arama yapmak daha hızlı ve sabit sonuç verecektir. Bunun için DataSet üzerinden sorgu yapmanız daha iyi olacaktır.

Örnek Stackoverflow;

Procedure filterr(Dataset: TDataSet; const FieldName, SearchTerm: string);
begin
Assert(Assigned(Dataset), 'No dataset is assigned');

if SearchTerm = '' then
Dataset.Filtered := False
else
begin
Dataset.Filter := FieldName + ' LIKE ' + QuotedStr(SearchTerm + '*');
Dataset.Filtered := True;
end;
end;

Edit'in OnChange Olayına;

filterr(mytable;'fieldname';edit1.Text);

Yukarıda ki kodun oluşturucusu Raouf Rahiche.

Örnek kodu denemedim, sadece kodlara bakınca işinizi göreceğinizi umut ediyorum. Yine de bilgisayarım elime geçerse örneklendirme yaparım.


P.S: TDataSet sınıfı için "Data.DB" kütüphanesini kullanmanız gerekmektedir.

Saygılarımla,
İyi çalışmalar.

Merhaba @"hyperxman" Öncelikle ilgine teşekkür ederim. Sanırım ben istediiğimi yanlış anlattım.
DBLookupComboBox icerisine yazıda yazamiyorum. oraya arama istediğim bir kac kelimeyi yazıp listeyi azaltmak istemistim.
Ama DBLookupComboBox secim seklinde ayarli. içerisine birsey yazamiyorum.

Merhaba,

Zannedersem DBLookupCombobox'un sizin dediğiniz gibi bir özelliği yok. DBLookupCombobox sadece gösterimi referans alıyor. Bunun için normal Combobox kullanabilirsiniz. Normal Combobox için ise yine GET işlemi gerekecek ve bir yavaşlamaya sebep olacaktır.

İyi çalışmalar.
kisisel_logo_dark.png
WWW
Cevapla
#5
(13-06-2018, Saat: 15:56)hyperxman Adlı Kullanıcıdan Alıntı:
(13-06-2018, Saat: 15:10)klavye Adlı Kullanıcıdan Alıntı: Merhaba @"hyperxman" Öncelikle ilgine teşekkür ederim. Sanırım ben istediiğimi yanlış anlattım.
DBLookupComboBox icerisine yazıda yazamiyorum. oraya arama istediğim bir kac kelimeyi yazıp listeyi azaltmak istemistim.
Ama DBLookupComboBox secim seklinde ayarli. içerisine birsey yazamiyorum.

Merhaba,

Zannedersem DBLookupCombobox'un sizin dediğiniz gibi bir özelliği yok. DBLookupCombobox sadece gösterimi referans alıyor. Bunun için normal Combobox kullanabilirsiniz. Normal Combobox için ise yine GET işlemi gerekecek ve bir yavaşlamaya sebep olacaktır.

İyi çalışmalar.

Teşekkür ederim.
Cevapla
#6
(13-06-2018, Saat: 14:49)klavye Adlı Kullanıcıdan Alıntı: Merhabalar,
DBLookupComboBox bileşeninde 100 lerce kayit olduğunda liste elamanları seçmesi daha dogrusu listeden istenilen kaydi bulmasi cok zor oluyor. combobox ta oldugu gibi DBLookupComboBox ta da arama yapilabilir mi acaba?
teşekkürler.

Bu noktada bu amaca hizmet eden "kendi" bileşeninizi veya kendi dialog formunuzu tasarlamanız gerekir.
YouTube Delphi Tips
"Mantıklı adam kendini dünyaya uyarlar; mantıksız adam ise dünyayı kendine uydurmakta inat eder. Bu nedenle, tüm ilerleme o inatçı adama bağlıdır." - George Bernard Shaw
WWW
Cevapla
#7
(13-06-2018, Saat: 16:01)uparlayan Adlı Kullanıcıdan Alıntı:
(13-06-2018, Saat: 14:49)klavye Adlı Kullanıcıdan Alıntı: Merhabalar,
DBLookupComboBox bileşeninde 100 lerce kayit olduğunda liste elamanları seçmesi daha dogrusu listeden istenilen kaydi bulmasi cok zor oluyor. combobox ta oldugu gibi DBLookupComboBox ta da arama yapilabilir mi acaba?
teşekkürler.

Bu noktada bu amaca hizmet eden "kendi" bileşeninizi veya kendi dialog formunuzu tasarlamanız gerekir.

Dediğiniz gibi ayrı bir formda başka bir yontemle çözmeye çalışacağım şuan için bileşen hazırlama zamanım yok.
Teşekkürler.
Cevapla
#8
Zaman Probleminiz varsa en basit aklıma gelen yöntem
Nesnenin KeyDown içeriğine basılan key'e Nesnenin Hintine ekleyerek bir basit yapı kur.
Sonrada hint degerien göre filter uygula. 
Basılan değer escape isede hinti temizle filtreyi kapat.
Bu dünyada kendine sakladığın bilgi ahirette işine yaramaz. 
Cevapla


Konu ile Alakalı Benzer Konular
Konular Yazar Yorumlar Okunma Son Yorum
  cxGrid>FindPanel Arama Yapılacak Kolonları Belirleme hi_selamlar 15 9.878 30-03-2026, Saat: 12:33
Son Yorum: barutali
  sql like ile birden fazla kelime arama erdogan 17 16.498 02-05-2024, Saat: 11:12
Son Yorum: RAD Coder
  Lookupcombobox - Tablosuz Liste nehirnnn 10 3.568 19-06-2022, Saat: 09:41
Son Yorum: MugenPower
  Array of Stings içerisinde arama yapma esistem 14 5.250 06-06-2021, Saat: 07:43
Son Yorum: mrmarman
  JSON ARRAY içerisinde arama mdagli2003 1 2.270 07-02-2021, Saat: 10:50
Son Yorum: SimaWB



Konuyu Okuyanlar: 1 Ziyaretçi