çoklu master-detail ile ilgili...

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
Kullanıcı avatarı
comlekciler
Üye
Mesajlar: 58
Kayıt: 17 Nis 2006 12:35

çoklu master-detail ile ilgili...

Mesaj gönderen comlekciler »

selam arkadaşlar...

3 veya 4 tabloyu birbirine bağlamam gerekmekte ama araştırdığım bütün çoklu master detail tabloları hep seri olarak bağlanmış benim istediğim karışık nasıl bağlanır.

örnekle anlatmak gerekirse;

1. tablo: Müsteri 2. tablo: ürün 3. tablo: siparis olsun.

diyelimki sipariş tablosu hem hangi müşterinin sipriş verdiğini tutmak için müşteri tablosuna bağlı bir alan içersin hem de hangi ürünün sipariş verildiğini anlamak için ürün tablosuna bağlı bir alan içersin.

bu bağlantıyı seri olarak yapamıyorsun. Ben Firebird ve IBdataset kullanıyorum. Her bir tablo için bir IBDataset ve Datasource var. Acaba bunları nasıl bağlamalıyım ve IBdataset için SQL kodu nasıl olmalı.

Ben incelediğim master detaillarla bir yorum getirmeye çalıştım ama bir çözüm bulamadım. yardımcı olabilirseniz sevinirim.

örneği fazla karıştırmamak için bu şekilde uydurdum. 3 tablodan daha fazla olursa onun mantığını bunu kullanarak çözmeye çalışırım.

şimdiden herkese teşekkürler.
"Bilgisizlerin geçtikleri mevkiye yaptığı fenalığı, yüzlerce aslan bir araya gelse yapamaz" MEVLANA
Kullanıcı avatarı
Murat DİCLE
Kıdemli Üye
Mesajlar: 702
Kayıt: 19 Nis 2006 04:12
Konum: İstanbul
İletişim:

Mesaj gönderen Murat DİCLE »

Selam,

Müşteri sayfası açıkken sipariş bilgilerini ve buna bağlı stok kalemlerini görmek mi istiyorsun. Master detail ile bunu yapabilirsin.
En basit yöntem her sipariş kalemine ayrıca müşteir kodunuda ekleyerek yapabilirsin. Ama aha kesin çözümü SQL ile yapabilirsin.

Çokta lazım değilse master-detail ile çalışmak iyi değildir. hiç kullanılmayacağı halde bir sürü tablonun açık kalması demektir.

Müşteri kartına bir button koyarsın sipariş detayları diye bişi olur, hatta birde DevExpress'in cxGrid'i ile sipariş satırları ve sipariş satırlarına bağlı stok kalemlerini gayet güzel gösterebilirsin.

Aslında cxGrid'i biraz kurcalasan master detail ile uğraşmana gerek kalmadan cxGrid'in herşeyin üstesinde geleceğini göreceksin..

Saygılar...
Kullanıcı avatarı
comlekciler
Üye
Mesajlar: 58
Kayıt: 17 Nis 2006 12:35

Mesaj gönderen comlekciler »

Tam olarak sormak istediğim IBDataset'leri ve Datasource'ları karışık olarak nasıl bağlayabilirim demek istemiştim. özür diliyorum senin dediklerini anlayamadım :cry: ama cxGrid i araştıracağım.

şöyle anlatmaya çalışayım.

Bildiğim kadarı ile IBDatasetler (veya IBQueryler) kendi arasında master detail ilişkisi ile bağlanabilmesi için birbirlerindeki Primary Key ve Froeingkey leri Datasourcelar aracılığı ile alarak iletişim sağlanıyor.Yani master tabloda bir kayıt seçildiği zaman o kayıttaki primarykey ile detail tablodaki froeingkeylerden aynı olanlar gösteriliyor. Bu datasourceların birbirine bağlanması ile oluyor. Tabiki where bloğundaki primarykey ve froeingkeylerin birbirine bağlanmasıda var.

Bu aşamaya kadar bir sorun yok. Ama benim sorumda sipariş dosyasının datasource una müşteri IBDataset ini bağlıyorum ama ürün tablosu açıkta kalıyor. Yani seri bir sitem olmadığı için sipariş tablosuna hem müşteri tablosu hem de ürün tablosu nasıl bağlanacak.

Bu şekilde hem gösterme işini yapacağım hem de delete,update gibi işlemlerde bir sorun çıkmamasını istiyorum

inşallah kafanızı karıştırmamışımdır. :(

dediğim gibi forumda hep il-ilçe-semt gibi seri olan bağlantılar mevcut.

Aklıma bir şey daha geldi, bu iş SQL kodundan mı hallediliyor yani datasourceların bağlantısı ile falan bir alakası yok mu. şimdi benimde kafam karıştı :oops:
"Bilgisizlerin geçtikleri mevkiye yaptığı fenalığı, yüzlerce aslan bir araya gelse yapamaz" MEVLANA
Kullanıcı avatarı
aslangeri
Moderator
Mesajlar: 4322
Kayıt: 26 Ara 2003 04:19
Konum: Ankara
İletişim:

Mesaj gönderen aslangeri »

s.a.
sizinde tahmin ettiğiniz gibi bir dataset in bir master sourcesi oluyor.
ama joinleri kullanarak işlemlerinizi halledebilirsiniz gibime geliyor.
kolay gelsin.
Duyduğun Şeylerin Söylediklerim Olduğuna Eminim Ama
Anladığın Şeylerin Anlatmak İstediklerim Olduğuna Emin Değilim
Cevapla