თავი 3. ანგარიშგების  ფორმირება და მართვა


ანგარიშგების  საფუძველი ცხრილი ან შეკითხვაა. მისი ფორმირება Access-ის საშუალებებით, პროგრამული კოდის გარეშე შეიძლება.  მონაცემების ბაზასთან მუშაობისას  ხშირად საჭირო ხდება ანგარიშგებაში მონაცემების დაჯგუფების დონეების, დაჯგუფების წყაროს,   მონაცემების ფორმატიზაციის და სხვა პარამეტრების შეცვლა. მაგ., ანგარიშგებაში/სურ. 3.1/ საჭიროა შემოტანილ იქნეს დაჯგუფება ველით ,,კურსი”, ან კურსის ნაცვლად დაჯგუფება მოხდეს ველით ,,ჯგუფი”, შეიცვალოს ანგარიშგების დასახელება  და სხვა. ამ და სხვა მრავალი სამუშაოს შესრულება შეიძლება მხოლოდ VBA-ზე დაწერილი პროგრამებით.

სურ. 3.1. ანგარიშგებაში ჩანაწერები დაჯგუფებულია ველით ,,ნომერი”

ანგარიშგების სტრუქტურა:  

ანგარიშგება შედგება მაქსიმუმ 25  უბნისგან /ცხრ.3.1/.

ცხრილიდან 3.1-დან ჩანს, რომ ჯგუფების სათაურის და შენიშვნის ნუმერაცია ხუთიდან იწყება. ანგარიშგების თვისების, უბანი (Detail), დამოუკიდებლად გამოყენება შედეგს არ იძლევა. მისი გამოყენება შეიძლება ანგარიშგების კონკრეტული უბნის მისათითებლად. ანგარიშგების უბნის   მითითება შეიძლება უბნის სახელით ან ნომრით, მაგ., Debug.Print Reports (“Rstudenti”).Detail.Height
ანგარიშგების განყოფილებების შექმნა
პროგრამის მუშაობის პროცესში ანგარიშგების ახალი განყოფილების შექმნა მხოლოდ კონსტრუირების რეჟიმშია შესაძლებელი.   
ზედა, ქვედა კოლონტიტულების, სათაურის,  ან შენიშვნის დამატება ხორციელდება DoCmd ობიექტის RunCommand მეთოდით: 
DoCmd.RunCommand acCmdReportHdrFtr 
DoCmd.RunCommand acCmdPageHdrFtr
ჯგუფების, მათი სათაურების და შენიშვნის შექმნა ფუნქციით წარმოებს, რომლის ჩაწერის სინტაქსი შემდეგია: CreateGroupLevel(strRep, strExsp, fhead, Ffoot)
სადაც:
strRep  ანგარიშგების დასახელებაა;
strExsp – ცხრილის ველის სახელია, რომლითაც დაჯგუფება ხორციელდება;
fhead, Ffoot – ჯგუფის სათაურის და შენიშვნის შექმნა (True)/არშექმნა (False) მიეთითება.

მაგალითი: ანგარიშგების სათაურის და შენიშვნის, ერთი ჯგუფის, ჯგუფის დასახელების და შენიშვნის შექმნა 
Sub testiRep() 
Dim strRep As String
strRep = „Rstudenti“
On Error GoTo t1
DoCmd.Echo False ’ეკრანის განახლების პროცესის გამოთიშვა
DoCmd.OpenReport strRep, acViewDesign ’ანგარიშგების გაღება დაპროექტების რეჟიმში
DoCmd.RunCommand acCmdReportHdrFtr ’ანგარიშგების სათაურის და შენიშვნის დამატება
Call CreateGroupLevel(strRep, „jgufi“, True, False) ’ჯგუფების შექმნის ფუნქციის გამოძახება
Reports!Rstudenti.Section(5).Height = 250 ’ჯგუფებს შორის მანძილის დაყენება. სექციის ნომერი 5 ჩაწერილია იმიტომ, რომ ჯგუფების სექციების ნუმერაცია 5-დან იწყება. 5 გვიჩვენებს ნულოვანი დაჯგუფების სათაურს 
DoCmd.OpenReport strRep, acViewPreview ’ანგარიშგების გაღება დათვალიერების რეჟიმში
t2: DoCmd.Echo True ’ეკრანის განახლების პროცესის ჩართვა
Exit Sub
t1: MsgBox Err.Number
Resume t2
End Sub

მაგალითი: ანგარიშგების სათაურის და შენიშვნის, ორი ჯგუფის, ჯგუფის დასახელებების და შენიშვნის შექმნა 
Sub testiRep()
Dim i, j As Integer
Dim strRep As String
strRep = „Rstudenti“
On Error GoTo t1
DoCmd.Echo False
DoCmd.OpenReport strRep, acViewDesign
DoCmd.RunCommand acCmdReportHdrFtr
i = CreateGroupLevel(strRep, „kursi“, True, False)
j = CreateGroupLevel(strRep, „gvari“, True, False)
Reports!Rstudenti.Section(5).Height = 250 ’დაჯგუფების პირველ დონებს შორის დაშორება 
Reports!Rstudenti.Section(7).Height = 250 ’დაჯგუფების მეორე დონეებს შორის დაშორება  
With Reports(strRep).GroupLevel(j)
 .GroupOn = 1
 .GroupInterval = 3
 End With
DoCmd.OpenReport strRep, acViewPreview
t2: DoCmd.Echo True
Exit Sub
t1: MsgBox Err.Number
Resume t2
End Sub
ანგარიშგებაში ჯგუფის დასახელების შეცვლა შესაძლებელია უბნის GroupLevel-ის თვისებით  ControlSource

შემდეგ გვერდზე მაგალითები, ანგარიშგების მოვლენები
უბნის №        
აღწერა
მუდმივა
0
მონაცემების უბანი
AcDetail
1
სათაური
AcHeader
2
შენიშვნა
AcFooter
3
გვერდის ზედა კოლონტიტული
AcPageHeader
4
გვერდის  ქვედა კოლონტიტული
AcPageFooter
5
პირველი დონის ჯგუფის სათაური        

6
პირველი დონის ჯგუფის შენიშვნა

7
მეორე დონის ჯგუფის სათაური

8
მეორე დონის ჯგუფის შენიშვნა        

9-24
მესამედან მეათე დონის ჩათვლით ჯგუფების სათაური და შენიშვნა