Accesden bakıye sorgusu

assenucler

Altın Üye
Katılım
19 Ağustos 2004
Mesajlar
3,519
Excel Vers. ve Dili
Ofis 365 TR 64 Windows 11 Home Single Language x64 TR
Bilgilendirme ve eklenen dosya için teşekkürler.
 
Katılım
6 Temmuz 2008
Mesajlar
1,875
Excel Vers. ve Dili
OFFİCE 2010- TÜRKÇE
Tek sql sorgusunda çözüme ulaşamayınca databasedeki TARIH alanını "10.03.2020 00:00:01" (tarıh-saat) formatında değiştirdim.
Aynı güne kayıt girdiğimde ise saniye alanını 1 artırıp kaydediyorum. Bu sayede tek sorguda işi çözmüş oldum.
Tabi bu benim için bir çözüm yolu..

Sorgu=
Kod:
BAKIYE = "SELECT SUM(IIF(BA='B',TUTAR,TUTAR*-1,)) FROM CARTH001 WHERE CARKOD=A.CARKOD AND TARIH<=A.TARIH "
sorgu = "SELECT A.CARKOD,A.TARIH,IIF(A.BA='B',A.TUTAR,0)AS BORC ,IIF(A.BA='A',A.TUTAR*-1,0) AS ALACAK,(" & BAKIYE & ") AS BAKIYE FROM CARTH001 A  order by  A.CARKOD,A.TARIH"
sonuç:
HTML:
CARKOD    TARIH    BORC    ALACAK    BAKIYE
12001001    10.03.2020    600    0    600
12001001    12.03.2020    600    0    1200
12001001    13.03.2020    0    -500    700
12001001    14.03.2020    0    -500    200
12001001    16.03.2020    0    -500    -300
12001001    17.03.2020    0    -500    -800
12001001    18.03.2020    750    0    -50
12001001    19.03.2020    30    0    -20
12001001    20.03.2020    300    0    280
12001001    22.03.2020    0    -400    -120
12001001    22.03.2020    0    -1500    -1620
12001001    23.03.2020    0    -1200    -2820
12001001    23.03.2020    1800    0    -1020
12001001    23.03.2020    500    0    -520
12001001    25.03.2020    1200    0    680
12001002    15.03.2020    0    -500    -500
12001003    18.03.2020    750    0    1500
12001003    18.03.2020    750    0    1500
12001004    23.03.2020    1800    0    1800
32001001    24.03.2020    0    -500    -500
32001001    25.03.2020    140    0    -360
 
Katılım
6 Temmuz 2008
Mesajlar
1,875
Excel Vers. ve Dili
OFFİCE 2010- TÜRKÇE
Borçbakıye ve Alacakbakiye olarak almak istenildiğinde bu kodlar kullanılabilir zira artık bu şekilde hazırladım kodlarımı.

Kod:
BAKIYE = "SELECT SUM(IIF(BA='B',TUTAR,TUTAR*-1,)) FROM CARTH001 WHERE CARKOD=A.CARKOD AND TARIH<=A.TARIH "
 SORGU1 = "SELECT A.CARKOD,A.TARIH,IIF(A.BA='B',A.TUTAR,0)AS BORC ,IIF(A.BA='A',A.TUTAR*-1,0) AS ALACAK,(" & BAKIYE & ") AS BAKIYE FROM CARTH001 A  order by  A.CARKOD,A.TARIH"
 sorgu = "SELECT CARKOD,TARIH,BORC,ALACAK,IIF(BAKIYE<0,ABS(BAKIYE),0) AS BORCBAKIYE ,IIF(BAKIYE>0,BAKIYE,0)AS ALACAKBAKIYE FROM (" & SORGU1 & ")"

CARKOD

TARIH

BORC

ALACAK

BORCBAKIYE

ALACAKBAKIYE

12001001

10.03.2020​

600​

0​

0​

600​

12001001

12.03.2020​

600​

0​

0​

1200​

12001001

13.03.2020​

0​

-500​

0​

700​

12001001

14.03.2020​

0​

-500​

0​

200​

12001001

16.03.2020​

0​

-500​

300​

0​

12001001

17.03.2020​

0​

-500​

800​

0​

12001001

18.03.2020​

750​

0​

50​

0​

12001001

19.03.2020​

30​

0​

20​

0​

12001001

20.03.2020​

300​

0​

0​

280​

12001001

22.03.2020​

0​

-400​

120​

0​

12001001

22.03.2020​

0​

-1500​

1620​

0​

12001001

23.03.2020​

0​

-1200​

2820​

0​

12001001

23.03.2020​

1800​

0​

1020​

0​

12001001

23.03.2020​

500​

0​

520​

0​

12001001

25.03.2020​

1200​

0​

0​

680​

12001002

15.03.2020​

0​

-500​

500​

0​

12001003

18.03.2020​

750​

0​

0​

1500​

12001003

18.03.2020​

750​

0​

0​

1500​

12001004

23.03.2020​

1800​

0​

0​

1800​

32001001

24.03.2020​

0​

-500​

500​

0​

32001001

25.03.2020​

140​

0​

360​

0​

 

Haluk

𐱅𐰇𐰼𐰚
Katılım
7 Temmuz 2004
Mesajlar
12,270
Excel Vers. ve Dili
64 Bit 2010 - İngilizce
+
Google Sheets
+
JScript

Üstad, SQL Server 2019 Express maalesef Win7 üzerine kurulamıyor. 2012 Edition kurdum ama, içinden çıkamadım..... Bunlar biraz zahmetli işler anlaşılan.

.
 

Haluk

𐱅𐰇𐰼𐰚
Katılım
7 Temmuz 2004
Mesajlar
12,270
Excel Vers. ve Dili
64 Bit 2010 - İngilizce
+
Google Sheets
+
JScript
Mesajınızı görmemişim.... dosyanın harici linki aşağıdadır. Siz indirdikten sonra, linki kaldıracağım.

Not: Sorgulama yapılacak tarih aralığının belirlenmesi opsiyonunu da ilave ettim.





Bu arada; bazı testler yapmak için, siz de içinde daha fazla veri (Cari Kod) olan bir MDB dosyası eklerseniz iyi olur. Bende Access yok, sizin dosyaya data ilave etmek için biraz uğraşmam gerekir yoksa....


.
 
Katılım
6 Temmuz 2008
Mesajlar
1,875
Excel Vers. ve Dili
OFFİCE 2010- TÜRKÇE
Mesajınızı görmemişim.... dosyanın harici linki aşağıdadır. Siz indirdikten sonra, linki kaldıracağım.

Not: Sorgulama yapılacak tarih aralığının belirlenmesi opsiyonunu da ilave ettim.





Bu arada; bazı testler yapmak için, siz de içinde daha fazla veri (Cari Kod) olan bir MDB dosyası eklerseniz iyi olur. Bende Access yok, sizin dosyaya data ilave etmek için biraz uğraşmam gerekir yoksa....


.
Bence on numara çalışma oldu Haluk bey, Elinize sağlık. umarım faydalı bir çalışma forum kullanıcıları için.

Merak edenler için VBNET kodları aşağıdaki gibidir.

Kod:
 Sub RAPORLA()
        Dim cn As OleDbConnection
        Dim objReader As OleDbDataReader
        Dim objDataset As DataSet = New VeritabanıDataSet
        Dim sorgu As String
        cn = New OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & Application.StartupPath & "\VeriTabanı\Veritabanı.mdb" & ";Persist Security Info=False;")
        '  Dim frm = F_CariTakip
        Dim KOSUL = "CARKOD LIKE '%" & CARKOD.Text & "%' AND   ISLEMTIPI LIKE '%" & ISLEMTIPI.Text & "%'  AND  TARIH  BETWEEN  @d1 and @d2 "
        Dim UNVAN = "SELECT DISTINCT(UNVAN) FROM CARTM001  WHERE CARKOD=A.CARKOD"
        
        Dim BAKIYE = "SELECT SUM(IIF(BA='B',TUTAR,TUTAR*-1,)) FROM CARTH001 WHERE CARKOD=A.CARKOD AND TARIH<=A.TARIH "
        Dim SORGU1 = "SELECT A.CARKOD,A.ISLEMTIPI,A.ACIKLAMA,A.TARIH,IIF(A.BA='B',A.TUTAR,0)AS BORC ,IIF(A.BA='A',A.TUTAR,0) AS ALACAK,(" & BAKIYE & ") AS BAKIYE FROM CARTH001 A " & _
            " WHERE " & KOSUL & " order by  A.CARKOD,A.TARIH"
        sorgu = "SELECT CARKOD,(" & UNVAN & ") AS UNVAN,TARIH,ISLEMTIPI,ACIKLAMA,BORC,ALACAK,IIF(BAKIYE<0,ABS(BAKIYE),0) AS BORCBAKIYE ,IIF(BAKIYE>0,BAKIYE,0)AS ALACAKBAKIYE FROM (" & SORGU1 & ")  "
 
        Dim cm2 As New OleDbCommand(sorgu, cn)
        cm2.Parameters.Add("@d1", SqlDbType.Date).Value = ILKTAR.Value.ToShortDateString
        cm2.Parameters.Add("@d2", SqlDbType.Date).Value = SONTAR.Value.ToShortDateString
        '  Dim dr2 As OleDbDataReader = cm2.ExecuteReader
        cm2.CommandType = CommandType.Text
        cm2.Connection.Open()
        objReader = cm2.ExecuteReader
        objDataset.Tables(0).Clear()
        objDataset.Tables(0).Load(objReader)
        objReader.Close()
        cn.Close()

        Dim rds As ReportDataSource = New ReportDataSource
        rds.Name = "CariHareketler"
        rds.Value = objDataset.Tables(0)
        Dim paramList As New Generic.List(Of ReportParameter)

        With Me
            .ReportViewer1.LocalReport.ReportPath = Replace(Application.StartupPath, "\bin\Debug", "") & "\Report1.rdlc"

            .ReportViewer1.LocalReport.DataSources.Clear()
            .ReportViewer1.LocalReport.DataSources.Add(rds)
            .ReportViewer1.ShowPrintButton = True
            .ReportViewer1.RefreshReport()
        End With
        Me.ReportViewer1.SetDisplayMode(DisplayMode.PrintLayout)
        Me.ReportViewer1.ZoomMode = ZoomMode.PageWidth
    End Sub
 
Katılım
6 Temmuz 2008
Mesajlar
1,875
Excel Vers. ve Dili
OFFİCE 2010- TÜRKÇE
Mesajınızı görmemişim.... dosyanın harici linki aşağıdadır. Siz indirdikten sonra, linki kaldıracağım.

Not: Sorgulama yapılacak tarih aralığının belirlenmesi opsiyonunu da ilave ettim.





Bu arada; bazı testler yapmak için, siz de içinde daha fazla veri (Cari Kod) olan bir MDB dosyası eklerseniz iyi olur. Bende Access yok, sizin dosyaya data ilave etmek için biraz uğraşmam gerekir yoksa....


.


Kod:
SORGU = "SELECT A.*, DateAdd('S', RIGHT(ID,5), TARIH),(SELECT SUM(TUTAR)FROM TBL WHERE A.CARKOD=CARKOD AND  DateAdd('S',RIGHT(ID,5), TARIH)<=DateAdd('S', RIGHT(A.ID,5), A.TARIH)) AS BAKIYE FROM TBL A WHERE CDATE(A.TARIH) >= CDATE('01.01.2020') ORDER BY  A.CARKOD,A.TARIH,A.ID "
Bakiyeyi tek sorguda doğru şekilde(şimdilik) getiren kod yukarıda oluşturdum.

İleride hata verir mi şu an için bir tespitim yok. Farklı bir bakış açısıyla yorumlayabilirmisiniz.
 
Üst