tablolar arasında bağlantı

Firebird ve Interbase veritabanları ve SQL komutlarıyla ilgli sorularınızı sorabilirsiniz. Delphi tarafındaki sorularınızı lütfen Programlama forumunda sorunuz.
Cevapla
akuyumcu63
Üye
Mesajlar: 386
Kayıt: 02 Tem 2007 09:43

tablolar arasında bağlantı

Mesaj gönderen akuyumcu63 »

degerli arkadaşlar;

ben bir hesap takip programı yapıyorum. elimdeki tablolor;

adres ve hareket bilgileri tablosu, bu iki tablo master-detail
ayrıca
benim hareket tablosuna bağlamak istediğim 4-5 tablo var

bunlar borc, alacak, tahsilat, odeme, cek, senet vs. tablolarıdır.

bu tabloların hepsini hareket tablosuna bağlamak istiyorum. yapmayı istediğim olay şu müşteri bilgisinden hareket bilgilerini oradanda detay bilgilerine ulaşmak istiyorum. tablolar arasında nasıl bir bağlantı kurmalıyım yada bu mantık sağlıklımıdır. sizler ne tavsiye edersiniz. teşekkürler.
Kullanıcı avatarı
bobasturk
Kıdemli Üye
Mesajlar: 1387
Kayıt: 20 May 2004 08:39
Konum: Düzce

Mesaj gönderen bobasturk »

merhaba,

ustam hareket tablosuna bağlayacağın tüm tablolarda hareket tablosunda olan ve benzersin olan id alanı diğer detail tablolarda da uygulaman. yani bütün tablolar bu hareketID ile bir birine bağlı olacak.

bu konuda forumda pek çok bilgi var master-detail diye aratırsanız sonuca ulaşacaksınızdır.

kolay gelsin
Şefkat-u Merhamette Güneş Gibi Ol.
Başkalarının Kusurunu Örtmekte Gece Gibi Ol.
Sehavet-u Cömertlikte Akarsu Gibi Ol.
Hiddet-u Asabiyette Ölü Gibi Ol.
Tevazu-u Mahviyette Toprak Gibi Ol.
Ya Olduğun Gibi Görün Ya Göründüğün Gibi Ol.

Resim
akuyumcu63
Üye
Mesajlar: 386
Kayıt: 02 Tem 2007 09:43

Mesaj gönderen akuyumcu63 »

merhaba,

sanırım olayı iyi anlatamadım, master detail de bir problem yok master detail yapıyorum. fomda bu konu hakkındaki hemen hemen bütün mesajları okudum. fakat benim yapmak istediğim şu,

mesela Ahmet kuyumcu müşterisini seçtiğim zaman hangi hareket tablolarında kaydı var ise bana (borç, alacak, çek, senet) tek gridde göstersin istiyorum daha sonrada bu kayıtlara tıklayarak bu kayıtların detayını görmek istiyorum, bu tablolama yapısını nasıl oluştura bilirim.

kolay gelsin
meron06
Üye
Mesajlar: 393
Kayıt: 15 Eki 2005 04:23

Mesaj gönderen meron06 »

yanlış anlamadıysam benimde bu tarz bi tablo yapım var.örneğin harekt tablona bu hareketlerin tipini belirten bi alan açabilirsin.örn.harekttipi=0 olanlar borç harekettipi=1 olanlar çek gbi .
mrtblt
Üye
Mesajlar: 222
Kayıt: 02 Tem 2007 05:13

Mesaj gönderen mrtblt »

bu tek gridde gosterme olayindan ne kastettigini tam olarak anladin mi??? Boyle bir kurgulama bana cok mantikli gelmedi. Cunku dogal olarak her tablonun farkli alan ozellikleri var ama sen bunlari standart bir alan altinda toplamak istiyorsun bilincli yada bilincsiz bir sekilde. Cunku bunu tek gridde toplamak istiyorum diyorsan boyle bir anlam cikar. Eger tablolardaki alanlar zaten benzes ise hepsi icin bir tablo tanimlayip mesela 'tip' diye bir alan ekler ve bu alanada hareket turunu yani senet, cek vs.. ekleyerek indexleme sorgulama isini cozebilirsin ama buda kulaga cok mantikli gelmiyor. Ama baska tablodan grid e veri cekeceksen en pratik yolu query kullanmaktir. Sonra query sonucunu bir dataset e aktar ve bu data set i grid icin sourcedataset olarak tanimla. Benim kendi kullnadigim kod asagidadir.

Kod: Tümünü seç

  if dbgrid1.datasource = dm.lksds_cari then
  begin
    str1 := dm.lks_cari.FieldByName('cl_code').asstring;
    str2 := dm.lks_cari.FieldByName('cl_name').asstring;
    dm.q_char.close;
    dm.q_char.sql.clear;
    dm.q_char.SQL.add('SELECT * from lks_char where clientref =');
    dm.q_char.SQL.add(''''+str2+''' order by tarih');
    dm.q_char.open;
    dm.dsg.dataset := dm.q_char;
    frm_lksdetay.dbgrid1.datasource := dm.dsg;
    frm_lksdetay.label1.caption:=str1+' - '+str2+'  Hesap Hareketleri';
    frm_lksdetay.showmodal;
  end;
Burada ben armutlari gosteriyorum sadece gridde ama sen - eger bahsettigin hareketler icin farkli tablolar kullanmayi dusunuyorsan - ayni zamanda birkac meyveyi yada sebzeyi de isini icine katiyorsun. Burada ihtiyacin olan sey programlama tekniklerinin otesinde olayin mantiksal kurgusunu olusturmak sanirim.
akuyumcu63
Üye
Mesajlar: 386
Kayıt: 02 Tem 2007 09:43

Mesaj gönderen akuyumcu63 »

borc, alacak, çek, senet tablolarında ortak alanlar var. bu ortak alanların aynısı hareket tablosunda da var ama bunların içi boş, çek senet kayıtlarındaki ortak alanları sadece hareket tablosuna çekmek istiyorum.

verdiğin kodları kendi programımda deneyeceğim. teşekkürler.
Kullanıcı avatarı
bobasturk
Kıdemli Üye
Mesajlar: 1387
Kayıt: 20 May 2004 08:39
Konum: Düzce

Mesaj gönderen bobasturk »

Merhaba,

İlk mesajını yine okudum, yine anladığım tabloları birbirine bağlamak ve ana tabloda bir kayda bastığında diğer grid vb. nesnelerde detail bilgileri gelmesi. bende pek çok çalışmamda bu şekil kullanıyorum.

son anladığıma gelince eğer verileri yani istediğin verileri tek bir gride toplamak istiyorsan sanırım ustalar daha iyi bilecektir JOIN kelimesi üzerinde durman gerekiyor. JOIN ile birden fazla tablodan verileri tek bir grid içerisine toplayabilirsin fakat sanıyorumki bunlar üzerinde işlem yapamazsın sadece raporlama amacı ile kullanırsın. Tabiki tablolarında ortak bir ID olması gerekiyor ki ilişkisel bağlantıyı sağlasın

kolay gelsin
Şefkat-u Merhamette Güneş Gibi Ol.
Başkalarının Kusurunu Örtmekte Gece Gibi Ol.
Sehavet-u Cömertlikte Akarsu Gibi Ol.
Hiddet-u Asabiyette Ölü Gibi Ol.
Tevazu-u Mahviyette Toprak Gibi Ol.
Ya Olduğun Gibi Görün Ya Göründüğün Gibi Ol.

Resim
akuyumcu63
Üye
Mesajlar: 386
Kayıt: 02 Tem 2007 09:43

Mesaj gönderen akuyumcu63 »

babostürk;

evet tam dediğin gibi bir şey yapmaya çalışıyorum. tabloları birbirine bağlamak, ortak ID tanımlamak falan tamam. yapamadığım tek bir gridde tablolardaki kayıtları kayıt sırasına göre sadece görüntülemek.

bu konu hakkında bir hocamız örnek bir uygulama yapsa iyi olurdu.

kolay gelsin.
Kullanıcı avatarı
bobasturk
Kıdemli Üye
Mesajlar: 1387
Kayıt: 20 May 2004 08:39
Konum: Düzce

Mesaj gönderen bobasturk »

merhaba,

ustam tamam işte JOIN diye aratırsan istediğin sonuca ulaşacaksın. JOIN in pek çok çeşidi var. Yanlış hatırlamıyorsam makale bölümünde naile ustamın yazdığı bir makale var. JOIN çeşitleri ile tabloları birleştirip aynı grid üzerinde gösterme.

kolay gelsin
Şefkat-u Merhamette Güneş Gibi Ol.
Başkalarının Kusurunu Örtmekte Gece Gibi Ol.
Sehavet-u Cömertlikte Akarsu Gibi Ol.
Hiddet-u Asabiyette Ölü Gibi Ol.
Tevazu-u Mahviyette Toprak Gibi Ol.
Ya Olduğun Gibi Görün Ya Göründüğün Gibi Ol.

Resim
Cevapla