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

ანგარიშგების დაპროექტების ეტაპები:
   1.        ცხრილების საფუძველზე/სურ.3.6/ შეკითხვის, სახელით, Seksaati ფორმირება:
SELECT tbstudenti.kursi, tbsag.sagdas, tbsaati.gacdsaati
FROM tbstudenti INNER JOIN (tbsag INNER JOIN tbsaati ON tbsag.sagkodi = tbsaati.sagkodii) ON tbstudenti.nomeri = tbsaati.nomeri;
შეკითხვის შედეგია:

   2.        Seksaati-ის საფუძველზე ჯვარედინა შეკითხვის ფორმირება:
TRANSFORM Sum(Seksaati .gacdsaati) AS SumOfgacdsaati
SELECT Seksaati.sagdas AS [sagnis dasaxeleba], Sum(Seksaati.gacdsaati) AS [sul saaTi] FROM Seksaati
GROUP BY Seksaati.sagdas
PIVOT Seksaati.jgufi;
    3.        სვეტების მაქსიმალური რაოდენობის განსაზღვრა (აღებულ იქნა 6). სურ.3.6-ზე ნაჩვენებია ანგარიშგება დაპროექტების რეჟიმში;

                                               სურ. 3.6. ანგარიშგება დაპროექტების რეჟიმში
    4.        ანგარიშგების თვისებაში Record Source ჩაწერეთ ჯვარედინა შეკითხვის სახელი; 
    5.        ანგარიშგების მოდულში  ჩაწერეთ პროგრამა:
Private Sub Report_Open(Cancel As Integer)
Dim icol, jcol, i As Integer
Dim strname, kit As String
Dim dak As ADODB.Connection
Dim can As New ADODB.Recordset
Set dak = CurrentProject.Connection
kit = „TRANSFORM Sum(Seksaati.gacdsaati) AS SumOfgacdsaati“ & _
„SELECT Seksaati.sagdas AS[sagnis dasaxeleba], Sum(Seksaati. gacdsaati) AS [sul saaTi] FROM Seksaati GROUP BY Seksaati.sagdas PIVOT Seksaati.jgufi“ 
can.Open kit, dak, adOpenStatic, adLockReadOnly, adCmdText
icol = can.Fields.Count ’შეკითხვით მიღებული სვეტების რაოდენობა
jcol = Me.Detail.Controls.Count ’ანგარიშგებაში არსებული მართვის ელემენტების რაოდენობა 
If jcol < icol Then
icol = jcol
End If
For i = 1 To icol
strname = can.Fields(i – 1).Name
Me.Controls(„L“ & i).Caption = strname ’მართვის ელემენტისთვის Label შეკითხვის შედეგად მიღებული ველის სახელის მიკუთვნება
Me.Controls(„Text“ & i).ControlSource = strname ‘მართვის ელემენტის TextBox-ის წყაროდ შეკითხვის შედეგად მიღებული ველის სახელის მიკუთვნება
 If i <> 1 Then
 Me.Controls(„V“ & i).ControlSource = „=sum([„ & strname & „])“
End If
Next
For i = icol + 1 To jcol  ‘ შეკითხვის მიერ გამოუყენებელი მართვის ელემენტების გადამალვა
Me.Controls(„L“ & i).Visible = False
Me.Controls(„Text“ & i).Visible = False
Me.Controls(„V“ & i ).Visible = False
Next
can.Close
dak.Close
can Nothimg
dak Nothimg
End Sub
ანგარიშგება დათვალიერების რეჟიმში შემდეგია/სურ.3.7/:

სურ. 3.7. ანგარიშგება დათვალიერების რეჟიმში

ანგარიშგების დახურვა
ანგარიშგების   დახურვის სინტაქსი შემდეგია:
DoCmd.Close [ობიექტის ტიპი], [ობიექტის სახელი], [დამახსოვრება]
1.        არგუმენტი – ობიექტის ტიპი, მისი მნიშვნელობებია: acDataAccessPage – მონაცემების შეღწევის გვერდი, acDefault – გაჩუმებით, acDiagram – დიაგრამა, acForm –  ფორმა, acFunction – ფუნქცია, acMacro – მაკროსი, acModule – მოდული;
2.        არგუმენტი – ობიექტის სახელი, იმ ობიექტის სახელია, რომლის დახურვაც გსურთ;
3.        არგუმენტი – დამახსოვრება, მნიშვნელობებია: acSaveNo –  დამახსოვრების გარეშე, acSaveYes – დამახსოვრებით, acSavePrompt – სისტემის მიერ გაიღება ფანჯარა დამახსოვრების აუცილებლობის შეკითხვით.

ანგარიშგებაში მონაცემების გადაცემა არგუმენტით OpenArgs
არგუმენტი OpenArgs OpenReport-ის მეთოდია. მისი საშუალებით ხორციელდება მონაცემების გადაცემა ანგარიშგებაში. ანგარიშგებაში გადაცემული მონაცემი ანგარიშგების OpenArgs თვისებაა. თვისებით მიიღება და შეინახება ანგარიშგებაში მიღებული მნიშვნელობა. 
მაგალითი: მოვლენის გამოყენება მონაცემების შეტანის კონტროლისათვის. 
       ფორმაზე დაიტანეთ ორი ველი. ერთი გამოცდაზე დაშვების თარიღის, მეორე კი – გამოცდის ჩაბარების თარიღის ჩასაწერად;
       მონაცემების ჩაწერის სისწორისა და გამოცდის თარიღის გამოცდაზე დაშვების თარიღზე მეტობის შესამოწმებლად ფორმის მოდულში დაწერეთ პროგრამები:

Private Sub Endtar_BeforeUpdate(Cancel As Integer)
If kontroli Then
MsgBox „გამოცდაზე ჩაბარების თარიღი გამოცდაზე  დაშვების თარიღზე მეტი უნდა იყოს „
Cancel = True
End If
End Sub

Private Function kontroli() As Boolean
On Error GoTo t1
kontroli = False
Dim dtstartim, dtendtar As Date
dtstartim = CDate(Me.Starttar.Value)
dtendtar = CDate(Me.Endtar.Value)
If dtendtar – dtstartim < 0 Then
kontroli = True
End If
t2: Exit Function
t1: kontroli = True
Resume t2
End Function 

ჯგუფი        

       საგნის დასახელება
საათი
1
დაპროგრამება
4
1
ინტერნეტ-ტექნოლოგიები
2
1
დაპროგრამება
4
1
ინტერნეტ-ტექნოლოგიები
4
1
ინტერნეტ-ტექნოლოგიები
4
1
დაპროგრამება
2
2
დაპროგრამება
2
2
ინტერნეტ-ტექნოლოგიები
4
2
დაპროგრამება
4
2
ინტერნეტ-ტექნოლოგიები
2