3 tablo'dan dbgrid'e istenilen alanları listeleme?

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
sevturk
Üye
Mesajlar: 117
Kayıt: 23 Nis 2006 01:04

3 tablo'dan dbgrid'e istenilen alanları listeleme?

Mesaj gönderen sevturk »

s.a. arkadaşlar;
forumda daha önce buna benzer soru sorulmuş ama cevap alınamamış..
benim master/detail olan 3 tablom var.. kasa bölümündeki formumda bulunan dbgrid'e müşteri formundaki müşteri adı ve müşteri soyadını, arıza tablosundaki tarih alanını ve kasa tablosundaki mevcut_kasa alanlarını listelemek istiyorum.. yardımcı veya fikri olanlar varsa şimdiden çok teşekkür ederim.. Allah hepinizden razı olsun.

az önce okudum ve çok hoşuma gitti: "Keskin bıçak olmak için çok çekiç darbesi yemek gerekir."
fduman
Moderator
Mesajlar: 2749
Kayıt: 17 Ara 2004 12:02
Konum: Ankara

Mesaj gönderen fduman »

Bunun için SQL kullanman lazım. Tabloları uygun şartlar ile birleştirerek yapacaksın.

Kod: Tümünü seç

SELECT musteri.ADI, musteri.SOYADI, ariza.TARIH, kasa.BAKIYE
   FROM musteri
   INNER JOIN ariza ON ariza.MUSTERI_ID = musteri.ID
   INNER JOIN kasa ON kasa.MUSTERI_ID = musteri.ID
gibi sana örnek teşkil edebilecek bir SQL sorgusu bu şekilde. Burada musteri tablosundan ADI ve SOYADI alınıyor, kasa tablosundan BAKIYE alanı ve ariza tablosundan da TARIH.

INNER JOIN ile 2 tablo daha uygun şartlar ile birleştiriliyor. Tabii ki sen tablolar arasındaki ilişkiyi nasıl kurmuşsan ON'dan sonrasını o şarta göre kurmalısın. Ben ilişkinin musteri.id ve MUSTERI_ID alanları arasında olduğunu varsaydım.

Daha sonra veritabanına göre uygun bileşenleri kullanarak, TQuery, TIBQuery, TAdoQuery vs.. bu SQL'i Select SQL property'sine yazıp aynen bir tablo gibi kullanabilirsin.
sevturk
Üye
Mesajlar: 117
Kayıt: 23 Nis 2006 01:04

Mesaj gönderen sevturk »

arkadaşım verdiğin kodları yaptım yalnız hata veriyo..
formuma BDE yaprağından Query yerleştirdim.. Obj.İns.'dan SQL kısmına girip;
select KASA_TABLO.GELIR,KASA_TABLO.GIDER,MUSTERI_TABLO.MUSTERI_ADI,MUSTERI_TABLO.MUSTERI_SOYADI,ARIZA_TABLO.ARIZA_TARIHI from KASA_TABLO yazdım ama olmadı.. eksik veya yanlış varmı yardım edersen sevinirim.. ilgin için Allah razı olsun.
fduman
Moderator
Mesajlar: 2749
Kayıt: 17 Ara 2004 12:02
Konum: Ankara

Mesaj gönderen fduman »

sql'i eksik yazmışsınız. inner join ile diğer tabloları da dahil etmelisiniz.
sevturk
Üye
Mesajlar: 117
Kayıt: 23 Nis 2006 01:04

Mesaj gönderen sevturk »

yazdığım komutun sonuna sadece KASA_TABLO değil diğer iki tablonunda ismini yazınca oldu ama bu seferde her kayda 3 şartlı bilgi girişi varmış gibi yazdı.. yani ahmet adlı müşterş adına gelir olarak 100 girince diğer kayıtlarada gelir 100 girmiş gibi ekliyo..
fduman
Moderator
Mesajlar: 2749
Kayıt: 17 Ara 2004 12:02
Konum: Ankara

Mesaj gönderen fduman »

İlişkiyi join kullanarak kurabilirsiniz. Verdiğim örneği inceleyin.
Cevapla