19-01-2020, Saat: 11:36
Merhaba arkadaşlar. Hali hazırda kullandığım bir ön muhasebe programı var kendi yaptığım. Elimin boşluğunda tabloya bir bakiye kısmı ekleyim dedim. SQL ile halletmeyi düşündüm ama bir türlü doğru sonuca ulaşamadım.
Sorgu Şu Şekilde:
SELECT a.cariid, a.istarihi, a.kisi, a.aciklama, a.alinan, a.verilen,
(SELECT SUM(b.verilen-b.alinan)
FROM caridb b
WHERE b.istarihi <= a.istarihi AND b.kisi ='matbacı')
FROM caridb a where a.kisi = 'matbacı'
ORDER BY a.istarihi;
Tablo Şu Şekilde:
cariid istarihi alinan verilen bakiye
1 01.01.2014 0 390 390
2 02.01.2014 0 90 480
3 03.01.2014 0 1600 2080
4 04.01.2014 0 500 4665
5 04.01.2014 0 2085 4665
Sorguyu çalıştırınca bakiyeler tablodaki gibi çıkıyor. İlk üç kayıt doğru hesaplamayı yapıyor daha sonra dördüncü ve beşinci kayıt bozuluyor. Takib eden rowlarda da ilk üç satır doğru hesaplıyor diğer iki satır bozuluyor. Tüm tablo boyunca böyle bir döngü oluyor. ADOquery ile dbgride bağlı olan bir tablo bu. On calc denedim ama dbgrid her scrollda yeniden hesaplama yapıyor ve doğru sonucu alamıyorum bu yüzden sql kullanmak istedim.
Yardımcı olursanız sevinirim. Şimdiden teşekkürler.
Sorunu çözdüm
. istarihi <= eşitliği hesaplamayı bozuyor. Aynı tarihteki işlemleri bir grup olarak işlem yapıyor problem bundan kaynaklanıyormuş. Yani aynı tarihteki değerlerin bakiyesi o yüzden aynı görünüyor. Yani üç kayıt doğru iki yanlış olması eşit tarihlerin gelmesi bu döngü tamamen bir rastlantıymış. Sorgu şu şekilde doğru çalıştı. Tarihe göre değil unique olan cariid ye göre işlem yaptırdım problem çözüldü.
SELECT a.cariid, a.istarihi, a.kisi, a.aciklama, a.alinan,a.verilen,
(SELECT SUM(b.verilen-b.alinan)
FROM caridb b
WHERE b.cariid <= a.cariid AND b.kisi ='matbacı')
FROM caridb a where a.kisi = 'matbacı'
ORDER BY a.cariid;
Sorgu Şu Şekilde:
SELECT a.cariid, a.istarihi, a.kisi, a.aciklama, a.alinan, a.verilen,
(SELECT SUM(b.verilen-b.alinan)
FROM caridb b
WHERE b.istarihi <= a.istarihi AND b.kisi ='matbacı')
FROM caridb a where a.kisi = 'matbacı'
ORDER BY a.istarihi;
Tablo Şu Şekilde:
cariid istarihi alinan verilen bakiye
1 01.01.2014 0 390 390
2 02.01.2014 0 90 480
3 03.01.2014 0 1600 2080
4 04.01.2014 0 500 4665
5 04.01.2014 0 2085 4665
Sorguyu çalıştırınca bakiyeler tablodaki gibi çıkıyor. İlk üç kayıt doğru hesaplamayı yapıyor daha sonra dördüncü ve beşinci kayıt bozuluyor. Takib eden rowlarda da ilk üç satır doğru hesaplıyor diğer iki satır bozuluyor. Tüm tablo boyunca böyle bir döngü oluyor. ADOquery ile dbgride bağlı olan bir tablo bu. On calc denedim ama dbgrid her scrollda yeniden hesaplama yapıyor ve doğru sonucu alamıyorum bu yüzden sql kullanmak istedim.
Yardımcı olursanız sevinirim. Şimdiden teşekkürler.
Sorunu çözdüm
. istarihi <= eşitliği hesaplamayı bozuyor. Aynı tarihteki işlemleri bir grup olarak işlem yapıyor problem bundan kaynaklanıyormuş. Yani aynı tarihteki değerlerin bakiyesi o yüzden aynı görünüyor. Yani üç kayıt doğru iki yanlış olması eşit tarihlerin gelmesi bu döngü tamamen bir rastlantıymış. Sorgu şu şekilde doğru çalıştı. Tarihe göre değil unique olan cariid ye göre işlem yaptırdım problem çözüldü.SELECT a.cariid, a.istarihi, a.kisi, a.aciklama, a.alinan,a.verilen,
(SELECT SUM(b.verilen-b.alinan)
FROM caridb b
WHERE b.cariid <= a.cariid AND b.kisi ='matbacı')
FROM caridb a where a.kisi = 'matbacı'
ORDER BY a.cariid;
