none
Cari Hesap Yurıyen bakiye RRS feed

  • Soru

  • TARİH AÇIKLAMA BORC/ALACAK TUTAR
    01.01.2016 BORÇ 1 10
    10.01.2016 BOÇ 1 10
    11.01.2016 BORÇ 1 10
    15.01.2016 BORÇ 1 5
    09.01.2016 ALACAK 2 15
    09.01.2016 ALACAK 2 5
    10.01.2016 BORÇ 1 20
    11.01.2016 BORÇ 1 10
    20.01.2016 ALACAK 2 20

    BÖYLE BİR TABLODA (CARİ_HAREKET) YÜRÜYEN BAKİYE NASIL YAPILIR

    BU KONUDA YARDIM EDERSENİZ SEVİNİRİM

    YANİ LİSTWİEV GÖSTERMEK İÇİN ŞİMDİDEN TEŞEKKÜR EDERİM

    9 Kasım 2016 Çarşamba 13:51

Yanıtlar

  • Bastan soyleseydin keske. 

    WITH    cte ( TARIH, ACIKLAMA, BORCALACAK, TUTAR, SiraNo )
              AS ( SELECT   * ,
                            ROW_NUMBER() OVER ( ORDER BY TARIH )
                   FROM     cari
                 )
        SELECT  * ,
                ( SELECT    SUM(CASE WHEN t2.BORCALACAK = 1 THEN 1
                                     ELSE -1
                                END * TUTAR)
                  FROM      cte t2
                  WHERE     t1.SiraNo >= t2.SiraNo
                )
        FROM    cte t1;

    Not: Tablo yapin herhalde gercekte boyle degildir, bu haliyle pek hos degil. Aslinda cariId, islemId gibi alanlarin vardir. Bir de yuruyen bakiye isini VB6 tarafinda da yapabilirdin ama VB6 data islemlerinde o kadar yetenekli degildi yanlis hatirlamiyorsam (VFP olsa cok cok rahat olurdu).

    Not2: Bir de lutfen yazdiginiz mesaji silmeyin. O kadar yazip gonder dedigimde hata almak hos olmuyor.

    • Yanıt Olarak İşaretleyen Ekrem Önsoy 10 Ocak 2017 Salı 17:42
    10 Kasım 2016 Perşembe 10:57

Tüm Yanıtlar

  • SELECT  * ,
            SUM(CASE WHEN BORCALACAK = 1 THEN 1
                     ELSE -1
                END * TUTAR) OVER ( ORDER BY TARIH ROWS UNBOUNDED PRECEDING ) AS BAKIYE
    FROM   tabloAd;

    • Yanıt Olarak Öneren KdrGny 9 Kasım 2016 Çarşamba 16:07
    9 Kasım 2016 Çarşamba 14:38
  • SELECT  * ,
            SUM(CASE WHEN BORCALACAK = 1 THEN 1
                     ELSE -1
                END * TUTAR) OVER ( ORDER BY TARIH ROWS UNBOUNDED PRECEDING ) AS BAKIYE
    FROM   tabloAd;

    incorrect syntax near 'ROWS'.

    HATASI VERİYOR

    (SERVER 2008) Yapmaya çalıştığım şey visual basic 6.0 da tarih,borç,alacak,bakiye dizilişi ile her harekette yürüyen bakiye almak

    yani kısacası cari hesap ekstresi LÜTFEN YARDIMCI OLUN.



    Erdal KOÇ


    • Düzenleyen kocari29 10 Kasım 2016 Perşembe 10:45
    10 Kasım 2016 Perşembe 10:44
  • Bastan soyleseydin keske. 

    WITH    cte ( TARIH, ACIKLAMA, BORCALACAK, TUTAR, SiraNo )
              AS ( SELECT   * ,
                            ROW_NUMBER() OVER ( ORDER BY TARIH )
                   FROM     cari
                 )
        SELECT  * ,
                ( SELECT    SUM(CASE WHEN t2.BORCALACAK = 1 THEN 1
                                     ELSE -1
                                END * TUTAR)
                  FROM      cte t2
                  WHERE     t1.SiraNo >= t2.SiraNo
                )
        FROM    cte t1;

    Not: Tablo yapin herhalde gercekte boyle degildir, bu haliyle pek hos degil. Aslinda cariId, islemId gibi alanlarin vardir. Bir de yuruyen bakiye isini VB6 tarafinda da yapabilirdin ama VB6 data islemlerinde o kadar yetenekli degildi yanlis hatirlamiyorsam (VFP olsa cok cok rahat olurdu).

    Not2: Bir de lutfen yazdiginiz mesaji silmeyin. O kadar yazip gonder dedigimde hata almak hos olmuyor.

    • Yanıt Olarak İşaretleyen Ekrem Önsoy 10 Ocak 2017 Salı 17:42
    10 Kasım 2016 Perşembe 10:57
  • Hocam Teşekkür ederim mesajları bir düzen içinde vermek istedim. İlginiz için teşekkür ederim.

    İlginç olan veri tabanındaki tabloda bir ID alanı yok bunun yerine refno var ama refno önceki bir tarihe işlem yapıldığında aritmetik bir sıralamanın dışına çıkıyor. Bu yüzden zorlandım. 


    Erdal KOÇ

    10 Kasım 2016 Perşembe 11:07
  • Set rss = connn.Execute("SELECT M.CARHARTAR,M.CARHARACIKLAMA ,( SELECT SUM(CASE WHEN CARHARGCFLAG=" & _
    "1 THEN CARHARTUTAR ELSE 0 END )FROM " & vt.Text & ".dbo.CARHAR WHERE CARHAR.CARHARTAR=M.CARHARTAR  AND CARHAR.CARHARREFNO=M.CARHARREFNO AND CARHARCARKOD=M.CARHARCARKOD AND CARHARSIRANO=M.CARHARSIRANO AND CARHARISTIPNO =M.CARHARISTIPNO) AS BORÇ,(SELECT  SUM(CASE WHEN CARHARGCFLAG=2 THEN CARHARTUTAR ELSE 0 END  ) FROM " & vt.Text & ".dbo.CARHAR WHERE CARHAR.CARHARTAR=" & _
    "M.CARHARTAR  AND CARHAR.CARHARREFNO=M.CARHARREFNO AND CARHARCARKOD=M.CARHARCARKOD AND CARHARSIRANO=M.CARHARSIRANO AND CARHARISTIPNO =M.CARHARISTIPNO) AS ALACAK,(SELECT  SUM(CASE WHEN CARHARGCFLAG=1 THEN CARHARTUTAR ELSE 0 END -CASE WHEN CARHARGCFLAG=" & _
    "2 THEN CARHARTUTAR ELSE 0 END ) FROM " & vt.Text & ".dbo.CARHAR WHERE  (CARHAR.CARHARTAR<M.CARHARTAR OR (CARHAR.CARHARTAR=M.CARHARTAR AND CARHAR.CARHARREFNO<=M.CARHARREFNO AND CARHAR.CARHARSIRANO<=M.CARHARSIRANO)) AND CARHARCARKOD=M.CARHARCARKOD) AS BAKİYE ,M.CARHARDOVKOD, (SELECT  SUM(CASE WHEN CARHARGCFLAG=1 THEN CARHARDOVTUTAR ELSE 0 END  ) FROM " & vt.Text & ".dbo.CARHAR WHERE CARHAR.CARHARTAR=" & _
    "M.CARHARTAR  AND CARHAR.CARHARREFNO=M.CARHARREFNO AND CARHARCARKOD=M.CARHARCARKOD AND CARHARSIRANO=M.CARHARSIRANO AND CARHARISTIPNO =M.CARHARISTIPNO) AS DOVBORÇ, (SELECT  SUM(CASE WHEN CARHARGCFLAG=" & _
    "2 THEN CARHARDOVTUTAR ELSE 0 END  ) FROM " & vt.Text & ".dbo.CARHAR WHERE CARHAR.CARHARTAR=M.CARHARTAR  AND CARHAR.CARHARREFNO=M.CARHARREFNO AND CARHARCARKOD=M.CARHARCARKOD AND CARHARSIRANO=" & _
    "M.CARHARSIRANO AND CARHARISTIPNO =M.CARHARISTIPNO) AS DOVALACAK ,(SELECT  SUM(CASE WHEN CARHARGCFLAG=1 THEN CARHARDOVTUTAR ELSE 0 END -CASE WHEN CARHARGCFLAG=2 THEN CARHARDOVTUTAR ELSE 0 END  ) FROM " & vt.Text & ".dbo.CARHAR  WHERE  (CARHAR.CARHARTAR<M.CARHARTAR OR (CARHAR.CARHARTAR=M.CARHARTAR AND CARHAR.CARHARREFNO<=M.CARHARREFNO AND CARHAR.CARHARSIRANO<=M.CARHARSIRANO)) AND CARHARCARKOD=M.CARHARCARKOD) AS DOVBAKİYE FROM " & vt.Text & ".dbo.CARHAR  AS M WHERE M.CARHARCARKOD = '" & ara.Text & "' ORDER BY M.CARHARTAR, M.CARHARSIRANO ASC", , adCmdText)

    BO KOD ÇALIŞYOR AMA GERİYE DÖNÜK AYNI TARİHE VERİ GİRİNCE ÇALIŞMIYOR. İŞİN ASLI BU


    Erdal KOÇ

    10 Kasım 2016 Perşembe 11:25
  • Çetin Hocam Budu Çalıştıramadım Yardımlarınızı bekliyorum

    Erdal KOÇ

    10 Kasım 2016 Perşembe 12:10
  • Uzgunum, MSDN forumlarinda sorunlar var ve sanirim duzeltmeye niyetleri de yok. Bir daha buralara ugramayabilirim.

    Kodun okuyup anlamasi kolay bir kod degil, elimde ornek set olmadan bakmasi cok zor. Baksam da bir daha bu mesaji bulabilecegimden ya da senin okuyabileceginden bile emin degilim artik.

    10 Kasım 2016 Perşembe 13:30