Combobox'a veri çekme

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
swerkan
Üye
Mesajlar: 5
Kayıt: 06 May 2005 12:50

Combobox'a veri çekme

Mesaj gönderen swerkan »

Merhaba arkadaşlar daha önceden forumunuzu takip ediyordum ama uyelik bugne kısmet oldu.benim sorum combobox'a ogrenci tablosundaki bolum_no ile bolum tablosundaki bolumleri çekmek istiyorum.Bunu lookupcombobox ile yapabilirim ama oalyı daha iyi kavramak için boyle yapmak istiyorum.
Bu konuda bana yardımcı olursanız çok sevinirim.
Teşekkürler...

ASE
Kıdemli Üye
Mesajlar: 518
Kayıt: 28 Ağu 2003 03:17
Konum: samsun
İletişim:

Mesaj gönderen ASE »

Merhaba.
Bunun icin verileri veri tabanından alacaksan sutundaki bilgileri distinct metodu ile teke indir. (Tabi tekrarlanan kayıtlar varsa.) Daha sonra

Kod: Tümünü seç

combobox.items.add
ile querynin o alanını istediğin gibi kullanabilirsin...

Kolay gelsin
Allah'ım!...
Yol boyunca bırakma elimi...
Düşerim sonra...


ASE YAZILIM

swerkan
Üye
Mesajlar: 5
Kayıt: 06 May 2005 12:50

Mesaj gönderen swerkan »

Benim yapmak istediğim ogrenci tablosundaki bolum numarasını kullanarak bolum tablosndaki bolumleri listeletmek sql bilgim var ama combobox ta nasıl kullanacağım kuramadım kafamda.

Kullanıcı avatarı
MicroChip
Kıdemli Üye
Mesajlar: 1119
Kayıt: 02 Ağu 2003 01:02
Konum: İstanbul
İletişim:

Mesaj gönderen MicroChip »

Kod: Tümünü seç

combobox1.items.clear;
while not table1.eof do
begin
  combobox1.items.add(table1.fieldbyname('isim').asstring);
  table1.next;
end;
dersen tablodaki bilgiyi alabilirsin


saygılar.
Kafkas Kartalı Kabarday
Sitesi!= http://www.ahmetceylan.com
Resim

swerkan
Üye
Mesajlar: 5
Kayıt: 06 May 2005 12:50

Mesaj gönderen swerkan »

Teşekkür ederim bunu biliyorum.
mesela ogrenci tablosndaki bolum_no alanında
1
2
3
alanları var
ben bunlarla bolum tablosundaki
bolum_no alanlarını karşılaştırarak bolumleri almak istiyorum.

select bolum_adi from bolum where bolum_no=(select bolum_no from ogrenci) gibi
umarım anlatabilmişimdir

Kullanıcı avatarı
vkamadan
Kıdemli Üye
Mesajlar: 1935
Kayıt: 17 Mar 2004 03:52
Konum: Adapazarı
İletişim:

Mesaj gönderen vkamadan »

Merhaba ,
Yanlış Anlamadıysam , öğrenci tablonda bolum_no adında bir alanın ve bolum isminde ki tablodada bolum_no ve bolum_adi adında alanların var burad yapmak istediğim öğrenci tablosundaki bolum_no bilgisinden yararlanarak ogrenci tablosunda kullanılmış bölüm isimlerini tespit edip combobox ta listelemek. bunu yapmak için aklıma gelen en basit yöntem INNER JOIN yöntemi bir örnek vereyim,

ogrenci
------------
ogrenci_adi
bolum_no

bolum
------------
bolum_no
bolum

şeklinde talbolar olsun bunları birleştirecek SQL kodu şu şekilde olmalı

Kod: Tümünü seç

SQlKodu:='select distinct ogrenci.bolum_no , bolum.bolum_adi from ogrenci INNER JOIN bolum ON ogrenci_bolum_no=bolum_bolum_no order by ogrenci_bolum_no ';
sonra bunu bir döngüyle combobox ın içine atıyoruz

Kod: Tümünü seç

with Query1 do 
begin
close;
sql.clear;
sql.add(SqlKomutu);  
active:=true;
first;
while not eof do
begin
combobox1.items.add(FieldByName('bolum_adi').AsString);
next;
end;
end;
kolay gelsin.
Volkan KAMADAN
www.polisoft.com.tr

Kullanıcı avatarı
MicroChip
Kıdemli Üye
Mesajlar: 1119
Kayıt: 02 Ağu 2003 01:02
Konum: İstanbul
İletişim:

Mesaj gönderen MicroChip »

kamadan benim dediğime yakın birşeyler demiş ama ben anladım galiba ne demek istediğinizi

bu sefer combobox tan seçip tablodan diğer değeri alacaksın

o zaman şöyle dersin

Kod: Tümünü seç

table1.locate('isim',combobox.items[i],[])
ile o kayıda konumlanıp değeri okuyacan bu kadar :D

verde programı yazıp verelim sana. Arama yap yada 8)

Saygılar iyi çalışmalar
Kafkas Kartalı Kabarday
Sitesi!= http://www.ahmetceylan.com
Resim

harezmi
Üye
Mesajlar: 11
Kayıt: 20 Oca 2018 08:03

Re: Combobox'a veri çekme

Mesaj gönderen harezmi »

ben de benzer bir sorun yaşıyorum adoquery nesnesi ile sql sorgusu yapıp tablodaki verileri çektikten sonra bir alandaki tüm verilerei comboboxa atmak istiyorum. kod bloğum aşağıda. program çalışınca bu bölümde dönüyor sorguda bir hata yok gibi döngüden çıakarınca sadece ilk kaydı ekliyor

begin
dep_adoq.SQL.Clear;
dep_adoq.SQL.Add('select * from depo_tbl');
dep_adoq.Open;
dep_adoq.First;
while not (dep_adoq.Eof) do
begin
dep_combo.Items.Add(dep_adoq.fieldbyname('depo_ad').AsString);
end
end;

Kullanıcı avatarı
Commandx
Üye
Mesajlar: 155
Kayıt: 01 Oca 2008 05:34

Re: Combobox'a veri çekme

Mesaj gönderen Commandx »

Kendi kullandığım yöntemi paylaşayım , Belki Lazım olur
Olası Mükerrer kayıtların önüne geçmek için (tekrarlı kayıtlar) olası, sütundaki aynı değerleri combobox içine atarak sonradan kullanılmak üzere filtrelemek istiyorsanız bu bir fikir verebilir.
form üzerine 1 adet checkbox koyun (kullanmayabilirsinizde) , 1 adet combobox , 1 tane query bileşeni koyun , checkbox veya bir butona atayın

Kod: Tümünü seç

var
 liste:TstringList;
BEGIN
if checkbox1.Checked =True then begin
with dm.UniQuery1 do
begin
  liste:=tstringlist.create;
  liste.Clear;
  combobox1.items.Clear;
  First;
  while not Eof do
  begin
       if combobox1.Items.IndexOf( FieldValues['BIRIMLER'] ) = -1 then
          ComboBox1.Items.Add(FieldValues['BIRIMLER']);
      Next;
 // Combobox1.Text:=  liste.Text;
  end;

end;
END;
dm.UniQuery1.First;
LISTE.FREE;
END;
http://www.delphibasics.co.uk/RTL.asp?Name=DaysBetween
Function PARSE( text, ilk, son:String ): String; // Çok Lazım oluyor da :)=
begin
Delete(Text, 1, pos(ilk, Text) + Length(ilk)-1);
Result := Copy(Text, 1, Pos(Son, Text)-1);
end;

Resim

ertank
Üye
Mesajlar: 1310
Kayıt: 12 Eyl 2015 12:45

Re: Combobox'a veri çekme

Mesaj gönderen ertank »

harezmi yazdı:
03 May 2019 09:39
ben de benzer bir sorun yaşıyorum adoquery nesnesi ile sql sorgusu yapıp tablodaki verileri çektikten sonra bir alandaki tüm verilerei comboboxa atmak istiyorum. kod bloğum aşağıda. program çalışınca bu bölümde dönüyor sorguda bir hata yok gibi döngüden çıakarınca sadece ilk kaydı ekliyor

begin
dep_adoq.SQL.Clear;
dep_adoq.SQL.Add('select * from depo_tbl');
dep_adoq.Open;
dep_adoq.First;
while not (dep_adoq.Eof) do
begin
dep_combo.Items.Add(dep_adoq.fieldbyname('depo_ad').AsString);
end
end;
Merhaba,

Kod örneklerinizi CODE bloğu içinde paylaşmanızda fayda var.

Gönderdiğiniz kod ile ilgili iki tane sorun var.
1- Query içindeki kayıtlarda dolaşmıyorsunuz.
2- ComboBox bileşeninin içini işleme başlamadan önce temizlemiyorsunuz.

Aşağıdaki kodu deneyebilir misiniz?

Kod: Tümünü seç

begin
  dep_adoq.SQL.Text := 'select * from depo_tbl';  // dep_adoq.SQL.Clear olmadan bu şekilde kullanılabilir. Eski SQL bilgisi yine silinmiş olacaktır
  dep_adoq.Open;
  dep_adoq.First;
  dep_combo.Items.Clear; // Yukarıdaki madde [2]
  while not (dep_adoq.Eof) do
  begin
    dep_combo.Items.Add(dep_adoq.fieldbyname('depo_ad').AsString);
    dep_adoq.Next; // Yukarıdaki madde [1]
  end;
end;

Cevapla