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 10:32
Konum: konya

combobaxa ait verileri dbgridde gösterme

Mesaj gönderen ecem » 18 Eki 2006 10:23

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 » 18 Eki 2006 10:27

onselect veya onchange olaylarında sorgu çalıştırarak rahatlıkla işini görebilirsin.

ecem
Üye
Mesajlar: 61
Kayıt: 17 Eki 2006 10:32
Konum: konya

Mesaj gönderen ecem » 18 Eki 2006 10:33

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 » 18 Eki 2006 10:40

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 10:32
Konum: konya

Mesaj gönderen ecem » 18 Eki 2006 10:49

ç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 » 18 Eki 2006 10:52

Yukarıdaki kodu tekrar incelermisin. Düzeltmeyi orada yaptım.

ecem
Üye
Mesajlar: 61
Kayıt: 17 Eki 2006 10:32
Konum: konya

Mesaj gönderen ecem » 18 Eki 2006 11:00

:( 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: 4731
Kayıt: 09 Ara 2003 08:13
Konum: Ankara
İletişim:

Mesaj gönderen mrmarman » 18 Eki 2006 11:12

- 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

ecem
Üye
Mesajlar: 61
Kayıt: 17 Eki 2006 10:32
Konum: konya

Mesaj gönderen ecem » 18 Eki 2006 11:26

:( 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 » 18 Eki 2006 11:31

tablonuz dolu mu ?? :roll:

Kullanıcı avatarı
mrmarman
Üye
Mesajlar: 4731
Kayıt: 09 Ara 2003 08:13
Konum: Ankara
İletişim:

Mesaj gönderen mrmarman » 18 Eki 2006 11:44

:)

- 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

ecem
Üye
Mesajlar: 61
Kayıt: 17 Eki 2006 10:32
Konum: konya

Mesaj gönderen ecem » 18 Eki 2006 01:57

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 » 18 Eki 2006 02:03

çalışan kodlarını yazarmısın, ona göre gidelim

ecem
Üye
Mesajlar: 61
Kayıt: 17 Eki 2006 10:32
Konum: konya

Mesaj gönderen ecem » 18 Eki 2006 03:10

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 03:08

Mesaj gönderen aLonE CoDeR » 18 Eki 2006 04:29

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