Arkadaşlar yazdığım programda MySQL veritabanı kullanıyorum ve bu programda bi sorunum var. Mastersource işini yapamadım hem grid.te görünecek hem de DBComboBox'larda görüntülenecek.
dmkutuphane.temanetler.First;
While not dmkutuphane.temanetler.Eof do
begin
DBComboBox1.Items.Add(dmkutuphane.temanetleremanetalanogrt.Value);
dmkutuphane.temanetler.Next;
end;
şeklinde yazdım burada kitap emaneti alan üyeler listeleniyor.
dmkutuphane.temanetler.First;
kisi:=dmkutuphane.temanetlerkisi_id.Value;
For a:=0 to dmkutuphane.temanetler.RecordCount-1 do
if dmkutuphane.temanetlerkisi_id.Value=kisi then
begin
DBComboBox2.Items.Add(dmkutuphane.temanetlerkitap.Value);
dmkutuphane.temanetler.Next;
end
else dmkutuphane.temanetler.Next;
DBComboBox yerine DBLookupComboBox kullanarak daha kolay yapılabilir. Bu tür programlarda ağ üzerinde ise ve çok sayıda kayıt varsa kasılma kaçınılmazdır While / do da ve for / do da oluşturulan DBComboBox içeriğini oluşturacak şekilde parametreli query bileşenleri ile yapılabilir.
abi kodlarını yazarsan çok sevinirim çünkü DBLookupComboBox'ta da yapmayı denedim ama yapamadım daha bu ilk programım o yüzden bazı şeyler tam oturmadı bende
Aslında master detay yapıyı tam kurarsan pek bir koda ihtiyacın olmayacak. Şöyleki; kişiler tablosunun master tablo olduğu düşünülürse, emanetler tablosu da detay tablosudur. Bu tablo veya query her ne ise (DataSet diyelim) DataSource'unda ya da bir tablo ise MasterDataSource'unda bu kişiler tablosu atanmış ve kişiler_kisi_id ile emanetler_Kisi_id dediğin ortak alanlar da birbirine eşitlenmişse oldu sana master detay yapı. Buradan sen kişiler tablosunda hangi kişi kayıtının üzerinde isen emanetler tablosunda da kodlama ile yapmaya çalıştığın sonucu alacaksın; yani sadece varsa o kişiye ait kayıtlar DBGrid, DBLookupComboBox vb. ne ise oraya gelecekler.
Bu bir query ise
select * from emanetler
where emanet_kisi_id = :KISI_ID
buradaki :KISI_ID Query nin DataSource una eklenen tablodan gelen kisi_id alanıdır.
MySql de muhtemelen zeos gibi bir bileşen takımı kullanacaksın orada neler var bilemiyorum. Genel anlamda master/detay yapının bir çözüm yolu budur. Yukarıda anlatmaya çalıştığım her ikisinin de tablo olduğu detay tabloda masterdatasource olarak birinci (master) tablonun bağlı olduğu datasource nin atandığı diğer yöntem de kullanılabilir.
uyeler tablom: Kütüphaneye üye olanları tutuyor. Buradaki key: adresim
uye_kitaplar tablom: Kütüphaneye üye olup kitap alan üyenin ownuye'sini yani adresim field'ının değerini, kitabın da ownkitap'ını yani yine adresim field'ının değerini tutuyor.
Bu yapıya göre bi cevap verirseniz zahmet olacak ama...