Delphi Can

Orjinalini görmek için tıklayınız: Comboboxlarda il ve ilçe listeleme
Şu anda (Arşiv) modunu görüntülemektesiniz. Orjinal Sürümü Görüntüle internal link
Merhabalar combobox1'de seçtiğim ilin, combobox2'de ilçelerinin listelenmesini istiyorum ama bir türlü yapamadım.


procedure TForm1.FormCreate(Sender: TObject);

begin
dbcombobox2.Clear;
adotable1.First;

repeat
 dbcombobox1.Items.Add(adotable1.FieldByName('sehir').AsString);
 adotable1.Next;
until (adotable1.EOF) ;

end;

mdb'den combobox1'e illeri atabiliyorum ama mastersource u adotable1 seçmeme rağmen combobox2 'de ilçeleri listeleyemedim. Yardımcı olur musunuz?
Selam
Comboboxa şehir isimlerini atadıktan sonra yapman gereken sonraki süreç, ilçeler tablosundaki verileri okuyarak, comboboxtaki seçili olan şehir adına göre filtrelemek ve bunları ilçe combobox ına atamak olacaktır.
Örneğin :
select ilce_adi from tblilceler where sehir_adi='''+combobox1.text+'''' // bu şekilde combobox1 de seçili olan sehir adına göre ilçeleri filtrelemiş olursun.
Sonraki yapacağın işlem ise, filtrelenmiş olan querydeki ilçe adlarını döngü ile, ilçeler combobox ına insert etmek olacaktır.
(16-02-2023, Saat: 13:14)shooterman Adlı Kullanıcıdan Alıntı: [ -> ]Selam
Comboboxa şehir isimlerini atadıktan sonra yapman gereken sonraki süreç, ilçeler tablosundaki verileri okuyarak, comboboxtaki seçili olan şehir adına göre filtrelemek ve bunları ilçe combobox ına atamak olacaktır.
Örneğin :
select ilce_adi from tblilceler where sehir_adi='''+combobox1.text+'''' // bu şekilde combobox1 de seçili olan sehir adına göre ilçeleri filtrelemiş olursun.
Sonraki yapacağın işlem ise, filtrelenmiş olan querydeki ilçe adlarını döngü ile, ilçeler combobox ına insert etmek olacaktır.

nacizane tavsiyem, yanlış algılamayın; "select ilce_adi from tblilceler where sehir_adi='''+combobox1.text+''''"
(gerçi bu uygulamanın kullanıcı kitlesi ile alakalıdır ama) profesyonel açıdan bakarsak,
bu şekilde kullanmayın ve bu şekilde kullanılması tavsiyesini vermeyin, sql injection açığını doğuruyorsunuz,
kişisel verilerin çalınmasınada ayrı bir boyutu, filtresiz bindsiz kullanım tablo drop a kadar gider,

konuyu derinlemesine anlamanız açısından, ilk önce eski videodan başlamak üzere,
https://www.youtube.com/@mdisec/videos 
inceleyin yararlı olacaktır, selamlar.
Combo1 in onclosepopup olayına, combo2 ye ilçe ataması yapan kodları yazmanı gerekmekte. Algorita yapısını böyle kurmanız gerekiyor.
Teşekkür ediyorum cevaplar için. Şu şekilde düzenledim istediğim gibi oldu.

procedure TForm1.Button1Click(Sender: TObject);
begin



 ADOQuery1.SQL.Clear();
 ADOQuery1.SQL.Add('SELECT * FROM ilceler');
 ADOQuery1.SQL.Add('WHERE sehir_adi = sehirim');
 ADOQuery1.Parameters.ParamByName('sehirim').Value := dbcombobox1.text;
 ADOQuery1.Open;
 repeat
 dbcombobox3.Items.Add(adoquery1['ilce']);
 adoquery1.Next;
 until (adoquery1.EOF) ;

 dbcombobox2.Clear;



end;
Bir tavsiyem olacak. Bu gibi tablodan kayıt okuma işlemlerinde repeat - until döngüsü kullanmayın, while - do döngüsü kullanın. Eğer tablo boş ise while döngüsü hiç çalışmayacak ama repeat döngüye bir kere gireceği için döngü komutları çalışacaktır. Bu da ek kontrol gerektirebilecektir ama while ile bunu baştan kontrol altına alarak döngü kurmak daha pratik olabilir.
ADOQuery1.Open;
while not adoquery1.EOF do
begin
  dbcombobox3.Items.Add(adoquery1['ilce']);
  adoquery1.Next;
end;
gibi...