dblookupcombobox ile filtreleme

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
must_sargin
Üye
Mesajlar: 216
Kayıt: 14 Şub 2004 03:13
Konum: Gebze
İletişim:

dblookupcombobox ile filtreleme

Mesaj gönderen must_sargin »

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.
Kullanıcı avatarı
mussimsek
Admin
Mesajlar: 7602
Kayıt: 10 Haz 2003 12:26
Konum: İstanbul
İletişim:

Mesaj gönderen mussimsek »

arkadaşlar DBEdit, DBCombo vs. üzerinde işlem/atama yapmayın, direk Dataset'ler üzerinden işlem yapın. Yani burda dataset'in Table1 ise,

Table1.FiledByName('ARAC_PLAKASI').AsString

gibi kullan.

Kolay gelsin.
Kullanıcı avatarı
mrmarman
Üye
Mesajlar: 4741
Kayıt: 09 Ara 2003 08:13
Konum: İstanbul
İletişim:

Mesaj gönderen mrmarman »

Selam...

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)
Resim
Resim ....Resim
must_sargin
Üye
Mesajlar: 216
Kayıt: 14 Şub 2004 03:13
Konum: Gebze
İletişim:

Mesaj gönderen must_sargin »

selam
dblookupcomboboxtan seçim yapmak istiyorum yani kullanıcı direkt oradan eleman seçsin ve sql'de ona göre filtreleme yapsın istiyorum nasıl bir komut kullanmam gerekiyor?
Kullanıcı avatarı
mrmarman
Üye
Mesajlar: 4741
Kayıt: 09 Ara 2003 08:13
Konum: İstanbul
İletişim:

Mesaj gönderen mrmarman »

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...

:arrow: 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...

Kod: Tümünü seç

   AktarmaYapilacakDegisken := Query3.FieldByName('AlanAdi').AsString;
:idea: Maksat elimiz alışsın... :wink:
Resim
Resim ....Resim
must_sargin
Üye
Mesajlar: 216
Kayıt: 14 Şub 2004 03:13
Konum: Gebze
İletişim:

Mesaj gönderen must_sargin »

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?
Kullanıcı avatarı
mrmarman
Üye
Mesajlar: 4741
Kayıt: 09 Ara 2003 08:13
Konum: İstanbul
İletişim:

Mesaj gönderen mrmarman »

Selam...

- Query1 ve Query2'nin SQL kodunu bizimle paylaşır mısın ?
Resim
Resim ....Resim
must_sargin
Üye
Mesajlar: 216
Kayıt: 14 Şub 2004 03:13
Konum: Gebze
İletişim:

Mesaj gönderen must_sargin »

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.
Kullanıcı avatarı
mrmarman
Üye
Mesajlar: 4741
Kayıt: 09 Ara 2003 08:13
Konum: İstanbul
İletişim:

Mesaj gönderen mrmarman »

Selam...

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); 
yazmışsınız...

Kod: Tümünü seç

   query1.sql.add('where aracplaka = "' + Query2.FieldByName('Aracplaka').AsString + '"'); 
şeklinde düzeltin...
Resim
Resim ....Resim
abdulkadir
Kıdemli Üye
Mesajlar: 489
Kayıt: 13 Eyl 2003 09:10
Konum: istanbul
İletişim:

Mesaj gönderen abdulkadir »

Söyle bir yöntem

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;
Bu yöntemle istedigin alanları
while ile Dblookupcombobox1 icine de atıp kullanabilirsin


Olustur Kullan Ve sessiz sedasız yok et :D

(su an bir cafedeyim Kodu ezberden yazdım Syntax hatası olabilir.)
abdulkadir
Kıdemli Üye
Mesajlar: 489
Kayıt: 13 Eyl 2003 09:10
Konum: istanbul
İletişim:

Mesaj gönderen abdulkadir »

mrmcop hocam pes vallahi :lol:
Artık yazmaya karar vermeden önce senin online
olup olmadıgına bakıcam :lol:

Hocam sevgiler.
Kullanıcı avatarı
mrmarman
Üye
Mesajlar: 4741
Kayıt: 09 Ara 2003 08:13
Konum: İstanbul
İletişim:

Mesaj gönderen mrmarman »

- Dostum estağfurullah... :oops:

- Cevapların çokluğu forum üyelerinin kalitesini gösteriyor... Sizin gibi dostlar oldukça ortada problem kalmaz...

- Bu forum hepimiz için bilgi kaynağı... :)

- Başarılar...
Resim
Resim ....Resim
must_sargin
Üye
Mesajlar: 216
Kayıt: 14 Şub 2004 03:13
Konum: Gebze
İletişim:

Mesaj gönderen must_sargin »

selam...
söylediğiniz yöntemlerin hepsini eksizsiz olarak uyguladım ancak delphi sürekli hata veriyor ve hatada token ? .asstring yazısı çıkıyor. anladığım benim problemim sql bağlantılarını düzgün yapamıyorum yada komutlarda bir hata yapıyorum. yardımcı olabilirseniz çok sevinirim. Kolay gelsin.
Kullanıcı avatarı
mrmarman
Üye
Mesajlar: 4741
Kayıt: 09 Ara 2003 08:13
Konum: İstanbul
İletişim:

Mesaj gönderen mrmarman »

- 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... :idea:

- 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;
Resim
Resim ....Resim
must_sargin
Üye
Mesajlar: 216
Kayıt: 14 Şub 2004 03:13
Konum: Gebze
İletişim:

Mesaj gönderen must_sargin »

selamlar...
yardımınız için çok teşekkür ederim. mrmcop hocamın verdiği komutu aynen uyguladım ve program tam istediğim şekilde çalıştı. hatta sonra 5 query ile diğer alanları da alıp onlara görede filtreleme yaptırdım.

TEŞEKKÜRLER!... :P
Cevapla