none
detay içeren tablo oluşturmak RRS feed

  • Soru

  • bir projemde satış faturaları tablom var.

    bu tabloya bağlı formda kayıt oluştururken f.no cari hesap ismi kdv tutarı felan gibi bilgileri kayıt ediyorum. ancak bu faturaya eklenen ürün detaylarını (birden çok kayıt içeriyor) fatura no adı altında oluşturmak zorunda olduğum bir tabloya ekliyorum. yani her fatura kaydettiğimde fatura tablosuna bir satır ve yeni create ettiğim faturano adlı tabloya ürün detaylarını ekliyorum. aslında bunun başka bir yolu var mı diye sormak istiyorum. çok fazla tablo oluşturmak doğru mu? rapor almak veya bilgiye kolay ulaşmak için yol bu mu olmalı.

    yardımlarınız için şimdiden teşekkürler

    saygılarımla

    20 Aralık 2013 Cuma 08:40

Yanıtlar

  • Tablonuz şu şekilde olmalı.

    SatisFaturalari

    ID,FaturaNo,CariHesapIsmi,KDVSizTutar,KDV,KDVLiTutar......

    SatisDetay

    SatisFaturaID,UrunKodu,Adet,KDVSizTutar,KDV,KDVLiTutar....

    Yukarıdaki SatisFaturaID, SatisFaturalari Tablosundaki ID kolonuna bağlı. Yani siz SatisFaturalari tablosunda FaturaNo'yu değiştirsenizde (hata olma olasılığına karşı) SatisDetay tablosuna ekstradan bir update çekmenize gerek kalmaz.

    Mesela Dedinizki FaturaNo'su 100600 olan ürünleri bana listele. O Zaman Sql şöyle olur

    Select sf.FaturaNo,sd.UrunKodu,sd.Adet,sd.KDVSizTutar,sd.KDV,sd.KDVLiTutar from SatisFaturalari sf
    inner join SatisDetay as sd on sd.SatisFaturaID=sf.ID
    Where sf.FaturaNo='100600'
    Order by sd.UrunKodu asc

    Dolayısı ile daha rahat işlem yapmış olursunuz. Programınızı daha rahat yönetirsiniz. Hata olduğunda daha hızlı müdahale edebilirsiniz.

    Eğer yukarıdaki örnekte SatisFaturaID'yi vermeyip, direk FaturaNo alanını verseydik, SatisFaturalari tablosunda faturaNo değiştiğinde (hata olduğunda), SatisDetay tablosunuda update etmek zorunda kalırdık. Ancak yukarıdaki gibi ID'ye bağlarsanız, SatisDetay tablosuna müdahale etmenize gerek kalmaz. Sadece SatisFaturalari kısmındaki FaturaNo'yu update etmeniz kafi gelir.


    Microsoft bu servisi kullanıcılarına yardım etme, Microsoft urunleri ve teknolojileriyle ilgili bilgi bankasını genişletme amacıyla ucretsiz sunmaktadır. Bu icerik olduğu gibi benim tarafımdan hazırlanmış olup Microsoft tarafından herhangi bir sorumluluk ustlenildiği anlamına gelmez. Iletişim: barissaritas[at]windowslive[nokta]com

    20 Aralık 2013 Cuma 11:50

Tüm Yanıtlar

  • Merhaba;

    Genelde uygulanması gereken yöntem Ana Tablo > Alt Tablo şeklinde olmalıdır. SQL'den sorgulama yaparken zaten ana tabloya bağlı olan alt tablo (detay) bilgilerini getir demeniz gerek. Bu işinizi kolaylaştırır. Örnek olarak açıklamak gerekirse

    SatisFaturalari

    FaturaNo , CariHesapIsmi,KDV.....

    SatisDetay

    UrunID,Adet,Tutar.....

    Şimdi diyelimki siz tüm verileri tek tabloda birleştirdiniz (SatisFaturalari) 1 fatura için mükerrer bir sürü kayıt oluşur. Yani Faturanızda 10 adet ürün varsa, 10 adet fatura oluşur. Bunu hiçbirimiz istemeyiz. İşin içinden çıkılmaz bir hal alır. Dolayısıyla en doğrusu Ara tablolar açmak (çok fazla abartmamak kaydıyla). Dediğim yöntemde uygularsanız uygulama hem daha kararlı çalışır hemde verileriniz daha tutarlı olur. Rapor almak istediğinizde daha hızlı sonuca ulaşırsınız.


    Microsoft bu servisi kullanıcılarına yardım etme, Microsoft urunleri ve teknolojileriyle ilgili bilgi bankasını genişletme amacıyla ucretsiz sunmaktadır. Bu icerik olduğu gibi benim tarafımdan hazırlanmış olup Microsoft tarafından herhangi bir sorumluluk ustlenildiği anlamına gelmez. Iletişim: barissaritas[at]windowslive[nokta]com

    20 Aralık 2013 Cuma 08:48
  • cevabınız için teşekkürler

    ancak; 1 adet fatura var A12345 şeklinde

    satış faturaları tabloma,

    --------------------------------

    fatura no - tutar

    A12345  - 5.450 TL

    ----------------------------------

    A12345 tablosunu yaratıyorum

    ---------------------------------

    Ürün Kodu - Adet

    15201        - 120

    15202        -100

    ----------------------------------

    şeklinde.

    5450 tl içeren 10 adet ürün var bu fatura no adına ait A12345 tablosu yaratıyorum ve içine de 10 adet ürünü ekliyorum. böylece her fatura detayı için alttablo yaratıp ürünleri öyle ekliyorum. her fatura yarattığımda fatura isminde alt tablo oluşuyor ve detaylar oraya yazılıyor(10 ürün veya 100 ürün)

    doğrumu yapıyorum yoksa

    sizin dediğiniz gibi

    satışdetay tablosu yaratıp 10 satır aynı faturanoyu içeren kayıtmı oluşturmalıyım.

    20 Aralık 2013 Cuma 09:59
  • Benim dediğim gibi yaparsanız daha rahat edersiniz. Inner joinle istediğiniz tüm bilgileri elde edebilirsiniz. Yani o faturaya ait kaç kalem ürün gelmiş bunun takibini daha rahat yaparsınız. Herhangi bir hata olduğunda daha rahat müdahale edersiniz.

    Microsoft bu servisi kullanıcılarına yardım etme, Microsoft urunleri ve teknolojileriyle ilgili bilgi bankasını genişletme amacıyla ucretsiz sunmaktadır. Bu icerik olduğu gibi benim tarafımdan hazırlanmış olup Microsoft tarafından herhangi bir sorumluluk ustlenildiği anlamına gelmez. Iletişim: barissaritas[at]windowslive[nokta]com

    20 Aralık 2013 Cuma 10:38
  • bana da sizin söylediğiniz gibi yapmak daha kullanışlı geliyor. ama eski kaydedilen bir faturayı çağırdığımda satışdetay tablosunda biriken ürünlerin listesini nasıl alabilirim. satışdetay tablosunda sadece ürün kodu var. bunun için satışdetay tablosunun ilk kolonu faturano olmalı ve 10 tane aynı fatura noya bağlı ürün satırları olmalı. eğer 200 fatura kesersek ve her faturada 10 satır olduğunu düşünürsek satırşdetay tablosunda 2000 satır veri kaydedilmeli ve istediğim o faturayı çağırdığımda bu fatura nosunu içeren kayıtları çağırmalıyım. doğru mu?
    20 Aralık 2013 Cuma 11:15
  • Tablonuz şu şekilde olmalı.

    SatisFaturalari

    ID,FaturaNo,CariHesapIsmi,KDVSizTutar,KDV,KDVLiTutar......

    SatisDetay

    SatisFaturaID,UrunKodu,Adet,KDVSizTutar,KDV,KDVLiTutar....

    Yukarıdaki SatisFaturaID, SatisFaturalari Tablosundaki ID kolonuna bağlı. Yani siz SatisFaturalari tablosunda FaturaNo'yu değiştirsenizde (hata olma olasılığına karşı) SatisDetay tablosuna ekstradan bir update çekmenize gerek kalmaz.

    Mesela Dedinizki FaturaNo'su 100600 olan ürünleri bana listele. O Zaman Sql şöyle olur

    Select sf.FaturaNo,sd.UrunKodu,sd.Adet,sd.KDVSizTutar,sd.KDV,sd.KDVLiTutar from SatisFaturalari sf
    inner join SatisDetay as sd on sd.SatisFaturaID=sf.ID
    Where sf.FaturaNo='100600'
    Order by sd.UrunKodu asc

    Dolayısı ile daha rahat işlem yapmış olursunuz. Programınızı daha rahat yönetirsiniz. Hata olduğunda daha hızlı müdahale edebilirsiniz.

    Eğer yukarıdaki örnekte SatisFaturaID'yi vermeyip, direk FaturaNo alanını verseydik, SatisFaturalari tablosunda faturaNo değiştiğinde (hata olduğunda), SatisDetay tablosunuda update etmek zorunda kalırdık. Ancak yukarıdaki gibi ID'ye bağlarsanız, SatisDetay tablosuna müdahale etmenize gerek kalmaz. Sadece SatisFaturalari kısmındaki FaturaNo'yu update etmeniz kafi gelir.


    Microsoft bu servisi kullanıcılarına yardım etme, Microsoft urunleri ve teknolojileriyle ilgili bilgi bankasını genişletme amacıyla ucretsiz sunmaktadır. Bu icerik olduğu gibi benim tarafımdan hazırlanmış olup Microsoft tarafından herhangi bir sorumluluk ustlenildiği anlamına gelmez. Iletişim: barissaritas[at]windowslive[nokta]com

    20 Aralık 2013 Cuma 11:50
  • çok net oldu

    teşekkürler

    saygılar

    20 Aralık 2013 Cuma 12:50