MasterSource yapamadım yardım edin

Diğer veritabanları ve SQL komutlarıyla ilgli sorularınızı sorabilirsiniz. Delphi tarafındaki sorularınızı lütfen Programlama forumunda sorunuz.
Cevapla
eseNuri
Üye
Mesajlar: 23
Kayıt: 03 Nis 2007 12:12

MasterSource yapamadım yardım edin

Mesaj gönderen eseNuri »

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.


Bunu FormShow olayına

Kod: Tümünü seç

  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.

Bu ComboBox'ın Change olayına da

Kod: Tümünü seç

  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;

YARDIM EDERSENİZ SEVİNRİM :roll:
Kullanıcı avatarı
rsimsek
Admin
Mesajlar: 4482
Kayıt: 10 Haz 2003 01:48
Konum: İstanbul

Mesaj gönderen rsimsek »

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 :idea: While / do da ve for / do da oluşturulan DBComboBox içeriğini oluşturacak şekilde parametreli query bileşenleri ile yapılabilir.
Bilgiyi paylaşarak artıralım! Hayatı kolaylaştıralım!!
eseNuri
Üye
Mesajlar: 23
Kayıt: 03 Nis 2007 12:12

Mesaj gönderen eseNuri »

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 :roll:
Kullanıcı avatarı
rsimsek
Admin
Mesajlar: 4482
Kayıt: 10 Haz 2003 01:48
Konum: İstanbul

Mesaj gönderen rsimsek »

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

Kod: Tümünü seç

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.
Bilgiyi paylaşarak artıralım! Hayatı kolaylaştıralım!!
eseNuri
Üye
Mesajlar: 23
Kayıt: 03 Nis 2007 12:12

Mesaj gönderen eseNuri »

abi yapamadım yaaa :roll:


tablo yapım şöyle:

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... :roll:

lütfen kızmayın bana :oops:
Cevapla