dblookupcombobox ile filtreleme
Forum kuralları
Forum kurallarını okuyup, uyunuz!
Forum kurallarını okuyup, uyunuz!
-
- Üye
- Mesajlar: 216
- Kayıt: 14 Şub 2004 03:13
- Konum: Gebze
- İletişim:
dblookupcombobox ile filtreleme
selamlar, benim programımda bir adet DM var ve bunda çaşitli tablolar var
istediğim ayrı bir formda (uses UDM girili) DBlookupcomboBoxtan seçtiğim bir öğenin SQL ile filtrelenmesi. SQL'e komutları giriyorum
query1.close
query1.sql.clear
query1.sql.add('select * from tasimalar')
query1.sql.add('where aracplaka:='''+Dblookupcombobox1.value+''')''')
query1.sql.open
şeklinde yapınca delphi tasima tablosu başka bir program tarafından kullanılıyor hatası veriyor.
istediğim ayrı bir formda (uses UDM girili) DBlookupcomboBoxtan seçtiğim bir öğenin SQL ile filtrelenmesi. SQL'e komutları giriyorum
query1.close
query1.sql.clear
query1.sql.add('select * from tasimalar')
query1.sql.add('where aracplaka:='''+Dblookupcombobox1.value+''')''')
query1.sql.open
şeklinde yapınca delphi tasima tablosu başka bir program tarafından kullanılıyor hatası veriyor.
Selam...
.. kod satırındaki kullanımda bir yanlışlık görüyorum...
Dblookupcombobox1.value değil
Dblookupcombobox1.Field.Value
veya
Dblookupcombobox1.Text şeklinde olmalıydı diye düşünüyorum...
- Delphi sürüm farklılıklarından bu tip bir değişiklik olur mu bilmediğimden emin de değilim... (Delphi 5.0 kullanıyorum)
Kod: Tümünü seç
query1.sql.add('where aracplaka:='''+Dblookupcombobox1.value+''')''')
.. kod satırındaki kullanımda bir yanlışlık görüyorum...
Dblookupcombobox1.value değil
Dblookupcombobox1.Field.Value
veya
Dblookupcombobox1.Text şeklinde olmalıydı diye düşünüyorum...
- Delphi sürüm farklılıklarından bu tip bir değişiklik olur mu bilmediğimden emin de değilim... (Delphi 5.0 kullanıyorum)
-
- Üye
- Mesajlar: 216
- Kayıt: 14 Şub 2004 03:13
- Konum: Gebze
- İletişim:
Selam...
- DBLookupComboBox için özel bir Query yardımıyla listelemek istediğin alanı veritabanından çek...
- Sonra da DBLookUpComboBox'un ListSource kısmına bu Query'nin DataSource'unu bağla... ListField ve KeyField kısımlarına da bu listesini göreceğin, Query ile Select ettiğin alan adını ver.
- Yine DBLookUpComboBox'un DataSource ve DataField kısımlarını boş bırak ki yaptığın seçim herhangi bir veritabanının alanında güncelleme yapmasın...
Böylece Asıl veritabanından bağımsız bir listen olmuş oldu...
- Şimdi kullanıcı bu listeden seçim yaptığında yukarda yazdığım şekilde Text veya Field.value ile bunu çekip istediğin yerde kullan...
- Başarılar...
// Edit : Ek //
@Admin yaptığı hatırlatmada haklı... Alışkanlık olsun diye bence şimdiden DBLookUpComboBox1.Text veya DBLookUpComboBox1.Field.Value yerine DBLookUpComboBox'un bağlı olduğu Query'nin alanını kullan... Zaten kullanıcı seçim yaptığında ilgili kayda otomatik konumlanmıştır demektir...
- Yani DBLookUpComboBox'a özel açtığın sorgu Query3 olsun...
Maksat elimiz alışsın... 
- DBLookupComboBox için özel bir Query yardımıyla listelemek istediğin alanı veritabanından çek...
- Sonra da DBLookUpComboBox'un ListSource kısmına bu Query'nin DataSource'unu bağla... ListField ve KeyField kısımlarına da bu listesini göreceğin, Query ile Select ettiğin alan adını ver.
- Yine DBLookUpComboBox'un DataSource ve DataField kısımlarını boş bırak ki yaptığın seçim herhangi bir veritabanının alanında güncelleme yapmasın...

- Şimdi kullanıcı bu listeden seçim yaptığında yukarda yazdığım şekilde Text veya Field.value ile bunu çekip istediğin yerde kullan...
- Başarılar...
// Edit : Ek //
@Admin yaptığı hatırlatmada haklı... Alışkanlık olsun diye bence şimdiden DBLookUpComboBox1.Text veya DBLookUpComboBox1.Field.Value yerine DBLookUpComboBox'un bağlı olduğu Query'nin alanını kullan... Zaten kullanıcı seçim yaptığında ilgili kayda otomatik konumlanmıştır demektir...
- Yani DBLookUpComboBox'a özel açtığın sorgu Query3 olsun...
Kod: Tümünü seç
AktarmaYapilacakDegisken := Query3.FieldByName('AlanAdi').AsString;


-
- Üye
- Mesajlar: 216
- Kayıt: 14 Şub 2004 03:13
- Konum: Gebze
- İletişim:
selamlar...
tablomdaki dbgridi query1 e bağladım ve tüm kayıtları çektim. query2 ilede filtreleme yapmak istiyorum. query1 in sql ile filtreleme komutu girdiğimde
aracplaka := query2.FieldByName('aracplaka')
aracplaka alanı bulunamadı hatası veriyor. acaba query leri birbirine bağlamam mı gerekiyor?
tablomdaki dbgridi query1 e bağladım ve tüm kayıtları çektim. query2 ilede filtreleme yapmak istiyorum. query1 in sql ile filtreleme komutu girdiğimde
aracplaka := query2.FieldByName('aracplaka')
aracplaka alanı bulunamadı hatası veriyor. acaba query leri birbirine bağlamam mı gerekiyor?
-
- Üye
- Mesajlar: 216
- Kayıt: 14 Şub 2004 03:13
- Konum: Gebze
- İletişim:
query1 tasima tablosundan tasima bilgilerini alıyor. kodu
select * from tasima
query2 yi dediğiniz gibi arac tablosundan DBLookupcomboboxun ilişkisi için
select aracplaka from arac
şeklinde oluşturdum. formun üzerine buton1 oluşturdum, üzerine tıklayınca DBLookupcombobox ta seçili aracı filtrelemesini istiyorum. butonun tıklama olayına
query1.close;
query1.sql.clear;
query1.sql.add('select * from tasima');
query1.sql.add('where aracplaka := Query1.FieldByName('Aracplaka').AsString);
query1.open;
şeklinde oluşturuyorum ancak query1'e . işaretini koyduğumda gelenlerin arasında FieldByName çıkmıyor.Tahminim bu nedenlede Aracplaka alanı bulunamadı hatası veriyor.
select * from tasima
query2 yi dediğiniz gibi arac tablosundan DBLookupcomboboxun ilişkisi için
select aracplaka from arac
şeklinde oluşturdum. formun üzerine buton1 oluşturdum, üzerine tıklayınca DBLookupcombobox ta seçili aracı filtrelemesini istiyorum. butonun tıklama olayına
query1.close;
query1.sql.clear;
query1.sql.add('select * from tasima');
query1.sql.add('where aracplaka := Query1.FieldByName('Aracplaka').AsString);
query1.open;
şeklinde oluşturuyorum ancak query1'e . işaretini koyduğumda gelenlerin arasında FieldByName çıkmıyor.Tahminim bu nedenlede Aracplaka alanı bulunamadı hatası veriyor.
Selam...
Kodunuzu foruma aktarırken hata yapmadıysanız, sorun belli oldu...
yazmışsınız...
şeklinde düzeltin...
Kodunuzu foruma aktarırken hata yapmadıysanız, sorun belli oldu...
Kod: Tümünü seç
query1.sql.add('where aracplaka := Query1.FieldByName('Aracplaka').AsString);
Kod: Tümünü seç
query1.sql.add('where aracplaka = "' + Query2.FieldByName('Aracplaka').AsString + '"');
-
- Kıdemli Üye
- Mesajlar: 489
- Kayıt: 13 Eyl 2003 09:10
- Konum: istanbul
- İletişim:
Söyle bir yöntem
Bu yöntemle istedigin alanları
while ile Dblookupcombobox1 icine de atıp kullanabilirsin
Olustur Kullan Ve sessiz sedasız yok et
(su an bir cafedeyim Kodu ezberden yazdım Syntax hatası olabilir.)
Kod: Tümünü seç
var
sorgu:TQuery;
begin
sorgu:= TQuery.Create(Nil);
With sorgu do
Begin
Active := False;
Close;
SQL.Clear;
DatabaseName := 'DB adi';
SQL.Add('select * from tasimalar')
SQL.Add('where aracplaka:=''+Dblookupcombobox1.Text+'') ;
try
Sorgu.ExecSQL;
Sorgu.Open;
Finally
Sorgu.free;
End;
End;
while ile Dblookupcombobox1 icine de atıp kullanabilirsin
Olustur Kullan Ve sessiz sedasız yok et

(su an bir cafedeyim Kodu ezberden yazdım Syntax hatası olabilir.)
-
- Kıdemli Üye
- Mesajlar: 489
- Kayıt: 13 Eyl 2003 09:10
- Konum: istanbul
- İletişim:
-
- Üye
- Mesajlar: 216
- Kayıt: 14 Şub 2004 03:13
- Konum: Gebze
- İletişim:
- Bir eksik olmalı...
- Query1 için sorgu yaptırdığınız sırada, Query2 açıktır umarım !? Henüz açık değilse ortada veri olmadığından hata vermesi doğal...
- Kodlamayı tekrar yazıyorum... Bu şekilde yapmalıydınız... Tekrar kontrol edin...
- Query1 için sorgu yaptırdığınız sırada, Query2 açıktır umarım !? Henüz açık değilse ortada veri olmadığından hata vermesi doğal...

- Kodlamayı tekrar yazıyorum... Bu şekilde yapmalıydınız... Tekrar kontrol edin...
Kod: Tümünü seç
query1.close;
query1.sql.clear;
query1.sql.add('select * from tasimalar');
query1.sql.add('where aracplaka = "' + Query2.FieldByName('Aracplaka').AsString + '"');
query1.open;
-
- Üye
- Mesajlar: 216
- Kayıt: 14 Şub 2004 03:13
- Konum: Gebze
- İletişim: