combobaxa ait verileri dbgridde gösterme

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
ecem
Üye
Mesajlar: 61
Kayıt: 17 Eki 2006 11:32
Konum: konya

combobaxa ait verileri dbgridde gösterme

Mesaj gönderen ecem »

arkadaşlar slm comboboxa markalr giricem (items özelliği dışında çünkü çok marka var) ve bu markalardan birini seçip örneğin bmw yi seçtiğim zaman sadece bmwye ait markalrın dbgridde gözükmesi gerekiyo yardımcı olursanız çok sevinirim şimdiden teşekkürler
Kullanıcı avatarı
SeRoKi
Üye
Mesajlar: 72
Kayıt: 09 Kas 2005 02:59
Konum: İstanbul

Mesaj gönderen SeRoKi »

onselect veya onchange olaylarında sorgu çalıştırarak rahatlıkla işini görebilirsin.
ecem
Üye
Mesajlar: 61
Kayıt: 17 Eki 2006 11:32
Konum: konya

Mesaj gönderen ecem »

ben bir sorgu oluşturdum ama işlevini yapmıyor

form1.adoquery1.Close;
form1.adoquery1.SQL.Clear;
form1.adoquery1.SQL.Add('select * from urun3');
form1.adoquery1.SQL.Add(' where marka='+''''+combobox2.Text+'''');
form1.adoquery1.Open;
form1.adoquery1.First;
combobox2.Items.Clear;
while not form1.adoquery1.Eof do
begin
combobox2.Items.Add(form1.adoquery1.fieldbyname('alan adın').AsString);
form1.adoquery1.Next;
yardımlarınızı beliyorum
Kullanıcı avatarı
SeRoKi
Üye
Mesajlar: 72
Kayıt: 09 Kas 2005 02:59
Konum: İstanbul

Mesaj gönderen SeRoKi »

Markayı comobobox1 den aldığını varsayıyorum.
combobox1 in onselect olayına

Kod: Tümünü seç

form1.adoquery1.Close; 
form1.adoquery1.SQL.Clear; 
form1.adoquery1.SQL.Add('select * from urun3'); 
form1.adoquery1.SQL.Add('where marka='+QuotedStr(combobox1.Items[combobox1.itemindex])); 
form1.adoquery1.Open; 
//--
form1.adoquery1.First; 
combobox2.Items.Clear; 
while not form1.adoquery1.Eof do 
begin 
combobox2.Items.Add(form1.adoquery1.fieldbyname('alan adın').AsString); 
form1.adoquery1.Next;
end;
ecem
Üye
Mesajlar: 61
Kayıt: 17 Eki 2006 11:32
Konum: konya

Mesaj gönderen ecem »

çok özürdilerim ama bunu comboboxın onchange olayına yazdım yine aynı başka ayarlama felan mı yapmam lazım sizin bu görevi yapan bir sorgunuz varsa onu deneyim yada butona tıklayınca kayıtlar gözükücek
Kullanıcı avatarı
SeRoKi
Üye
Mesajlar: 72
Kayıt: 09 Kas 2005 02:59
Konum: İstanbul

Mesaj gönderen SeRoKi »

Yukarıdaki kodu tekrar incelermisin. Düzeltmeyi orada yaptım.
ecem
Üye
Mesajlar: 61
Kayıt: 17 Eki 2006 11:32
Konum: konya

Mesaj gönderen ecem »

:( sanırım başka yerlerde eksiklik var siz bu koddan bağımsız olarak ne yapabilirim çok acil bikaç gündür araştırıyom ama sonu ç negatif sadece tek bir combobox kullanıcam ama o kodda iki cobobox var anlamdım
Kullanıcı avatarı
mrmarman
Üye
Mesajlar: 4740
Kayıt: 09 Ara 2003 08:13
Konum: İstanbul
İletişim:

Mesaj gönderen mrmarman »

- Combobox'un OnSelect olayına yazılacak kod @SeRoKi'nin müsadesiyle sadeleştirilmiş hali aşağıdaki şekildedir.

Kod: Tümünü seç

  With Form1 do begin
    AdoQuery1.Active := False;
    AdoQuery1.SQL.Clear;
    AdoQuery1.SQL.Add( 'select * from urun3' );
    AdoQuery1.SQL.Add( 'where marka = ' + QuotedStr(ComboBox1.Text) );
    AdoQuery1.Active := True;
  end;
Resim
Resim ....Resim
ecem
Üye
Mesajlar: 61
Kayıt: 17 Eki 2006 11:32
Konum: konya

Mesaj gönderen ecem »

:( tüh ya yine olmadı kod aynen alıp yapıştıryorum çalışıyo fakat comboboxta hiçbişey gözükmüyo ne yapcaz
Kullanıcı avatarı
SeRoKi
Üye
Mesajlar: 72
Kayıt: 09 Kas 2005 02:59
Konum: İstanbul

Mesaj gönderen SeRoKi »

tablonuz dolu mu ?? :roll:
Kullanıcı avatarı
mrmarman
Üye
Mesajlar: 4740
Kayıt: 09 Ara 2003 08:13
Konum: İstanbul
İletişim:

Mesaj gönderen mrmarman »

:)

- Buraya kadar yapılanlar, içeriği sabit bilgilerle dolu olduğunu değerlendirdiğimiz ComboBox1 için, seçilen bir markaya göre DBGrid'deki listenin filtrelenmesi üzerine idi....

- Şimdi ComboBox içeriğiği mi doldurmaya çalışıyoruz yoksa aksi mi soruyu detaylandıralım.

- ComboBox1'in içeriği dolacaksa ikinci bir farklı sorgu ihtiyacı vardır. Bunu AdoQuery'ini OnAfterOpen olayına gerçekleştireceksiniz.

- Bu işlem aslında iki satır kod ile TDBLookUpComboBox ile çözülür ama kafa karışıklığı yaratmamak için öncelikle bildiğiniz yoldan çözüm üretelim.

- İlk olarak veritabanınız açıldığında ComboBox1 içeriği boşaltılıp yenileri doldurulsun... Böylece anlaşamadığımız ilk adım atılsın... :lol:

Kod: Tümünü seç

procedure TForm1.ADOQuery1AfterOpen(DataSet: TDataSet);
begin
  // Burada Markalar ComboBox1'e collect ediliyor..
  ComboBox1.Clear;
  With TAdoQuery.Create(Nil) do begin
    Connection := AdoQuery1.Connection;
    SQL.Text := 'SELECT marka FROM urun3 GROUP BY marka ORDER BY marka';
    Active   := True;
    While NOT EOF do begin
      ComboBox1.Items.Add( FieldByName('marka').AsString );
      Next;
    end;
    Active := False;
    Free;
  end;
end;
- Gerisi daha önceki çözüm oluyor... Seçildiğinde ilgili kayıtlar filtrelenecektir.
Resim
Resim ....Resim
ecem
Üye
Mesajlar: 61
Kayıt: 17 Eki 2006 11:32
Konum: konya

Mesaj gönderen ecem »

ALLAH razı olsun beni çok sevidirdiniz çalıştı yalnız bi sorum daha var
comboboxtan örn bmw markasını seçtim on a ait kayıtlar geliyo comboboxın text kısmında bmw olması gerekiyo ylnız boş duruyo bunun çzümü varmı acacba
Kullanıcı avatarı
SeRoKi
Üye
Mesajlar: 72
Kayıt: 09 Kas 2005 02:59
Konum: İstanbul

Mesaj gönderen SeRoKi »

çalışan kodlarını yazarmısın, ona göre gidelim
ecem
Üye
Mesajlar: 61
Kayıt: 17 Eki 2006 11:32
Konum: konya

Mesaj gönderen ecem »

comboboxın on select olyına
With Form1 do begin
AdoQuery1.Active := False;
AdoQuery1.SQL.Clear;
AdoQuery1.SQL.Add( 'select * from urun3' );
AdoQuery1.SQL.Add( 'where marka = ' + QuotedStr(ComboBox1.Text) );
AdoQuery1.Active := True;
end;



bide adoquerynin after opene
ComboBox1.Clear;
With TAdoQuery.Create(Nil) do begin
Connection := AdoQuery1.Connection;
SQL.Text := 'SELECT marka FROM urun3 GROUP BY marka ORDER BY marka';
Active := True;
While NOT EOF do begin
ComboBox1.Items.Add( FieldByName('marka').AsString );
Next;
end;
Active := False;
Free;
end;
yazdım şimdiden teşekkürler
comboboxın text kısmında seçtiğim marka adı olucak
aLonE CoDeR
Kıdemli Üye
Mesajlar: 1223
Kayıt: 26 Nis 2005 04:08

Mesaj gönderen aLonE CoDeR »

After Open eventindeki kodların başına, comboboxtaki değeri bir değişkene atamak suretiyle gecici bir saklama kullanmak ve işlem bittikten sonra bu işlemin tersini yapmak kodlarına göre uygun çözüm gibi görünüyor ama benim asıl merak ettiğim konu olayın senaryosu.Tamamen kendin mi yazdın yoksa alıntı mı?Zira baya bi ilginç geldi bana :roll:
Cevapla