SQL de Arkadaşlar CariKart isminde bir tablom var bu tablo müşterilerin bilgilerini tutuyor.Yaklaşık 30 tane değişkeni var . Borc,Alacak ve Bakiye kolonları birtakım işlemlerden geçip öyle hesaplanacak.
Şimdi benim düşüncem 2 ayrı tablo yapmak Borc ve Alacak diye Sonra bunların farkını Bakiyede tutmak. Ama ilişkilendirmede tabloları zorluk çekiyorum. Her müşterinin bir tane Borc hanesi bir tane alacak hanesi olması lazım.Bakiye diye bir tablo açmam gerekir mi nasıl ilişkilendireceğim Benim düşüncem yanlış mı fikir verecek olan var mı
DH forumlarında vakit geçirmekten keyif alıyor gibisin ancak giriş yapmadığını görüyoruz.
Üye olduğunda özel mesaj gönderebilir, beğendiğin konuları favorilerine ekleyip takibe alabilir ve daha önce gezdiğin konulara hızlıca erişebilirsin.
Merhaba Database olarak ne kullanıyorsunuz... ? Eğer MSSQL kullanıyorsanız.. Çok basit bir çözümü var .. Borç, Alacak ve Bakiye alanlarını hesaplanacak şekilde ayarlamanız. Sözkonusu formülleri database properties penceresinde ilgili alanın Formulas özelliğine girerek sorunu çözebilirsiniz.. Tek bir tabloda.. Ancak daha basit bir database kullanıyorsanız.Örneğin Access; O zaman SQL cümlesi ile sorunu çözebilirsiniz..
UPDATE CariKart SET Borc = Devir+Ödeme+Ciro+İadeFaturası+kdv+Diger, Alacak=Devir+Ödeme+Ciro+İadeFaturası+kdv+Diger;
UPDATE CariKart SET Bakiye=Alacak-Borc;
Cümleleri, yine başka tablo oluşturmadan problemi çözmenizi sağlayabilir. İyi Çalışmalar... Saygılarımla.........
Başka tablo oluştursam daha iyi çünkü CariKart tablosu iyice şişti 40 a yakın değişkeni var bunları da eklersem 50 yi bulacak ama söylediklerin işime yarayacak yine de saolasın MSsql kullanıyorum veri tabanı olarak
Başka tablo kullanınca sorun Her carinin bir borc bir alacak tablosunun olması gerekmesi.Burada carikod kısmını primary key yapmam gerekiyo ancak o zamanda ilişki kuramıyorum Carikart tablosu ile Sorun burda
Önemli değil yardımcı olabildiysem sevinirim... Madem ki MSSQL kullanıyorsun O zaman başka bir seçenekte Carikart tablosuna Trigger yazmak olabilir. Yani Carikart tablosundaki ilgili kolonlar Update veya insert olduğunda Borç ve Alacak tablolarına kayıt yapabilir veya güncelleyebilirsin... Mesela ;
CREATE TRIGGER borc_alacak_trigger ON CariKart FOR INSERT, UPDATE AS BEGIN DECLARE @Devir int DECLARE @Ödeme int DECLARE @Ciro int DECLARE @iadeFat int DECLARE @kdv int DECLARE @diger int
DECLARE @borc int DECLARE @alacak int DECLARE @bakiye int DECLARE @musteri_id int
SET @borc = @devir+@Ödeme+@Ciro+@iadeFat +@kdv+@diger SET @alacak=@devir+@Ödeme+@Ciro+@iadeFat +@kdv+@diger SET @bakiye=@alacak - @borc
IF (EXISTS(SELECT * FROM borctablo WHERE musteri_id = @musteri_id )) BEGIN UPDATE borctablo SET borc = @borc WHERE musteri_id = @musteri_id UPDATE alacaktablo SET alacak = @alacak WHERE musteri_id = @musteri_id UPDATE bakiyetablo SET bakiye = @bakiye WHERE musteri_id = @musteri_id END ELSE BEGIN -- veya INSERT INTO borctablo (musteri_id, borc) VALUES ( @musteri_id, @borc ) INSERT INTO alacaktablo (musteri_id, alacak) VALUES ( @musteri_id, @alacak ) INSERT INTO bakiyetablo (musteri_id, bakiye) VALUES ( @musteri_id, @bakiye ) END END
şeklinde bir şey olabilir.... İyi çalışmalar Saygılarımla.............
Bu trigger database üzerinde olup veritabanı penceresinden tabloya kayıt ekleyip güncellediğinde bile otomatik olarak çalışıyor.. Dolayısı ile program içerisinden çağırılmıyor..
Borc = Devir+Ödeme+Ciro+İadeFaturası+kdv+Diger;
Alacak=Devir+Ödeme+Ciro+İadeFaturası+kdv+Diger;
Bakiye=Alacak-Borc;
Şimdi benim düşüncem 2 ayrı tablo yapmak Borc ve Alacak diye Sonra bunların farkını Bakiyede tutmak. Ama ilişkilendirmede tabloları zorluk çekiyorum.
Her müşterinin bir tane Borc hanesi bir tane alacak hanesi olması lazım.Bakiye diye bir tablo açmam gerekir mi nasıl ilişkilendireceğim
Benim düşüncem yanlış mı fikir verecek olan var mı
DH forumlarında vakit geçirmekten keyif alıyor gibisin ancak giriş yapmadığını görüyoruz.
Üye Ol Şimdi DeğilÜye olduğunda özel mesaj gönderebilir, beğendiğin konuları favorilerine ekleyip takibe alabilir ve daha önce gezdiğin konulara hızlıca erişebilirsin.