Private Sub Command11_Click()
Dim cn As ADODB.Connection
Dim rs As ADODB.Recordset
Dim rs2 As ADODB.Recordset
Dim rs3 As ADODB.Recordset
Dim sumTegen As Double
Dim sumBoek As Double
Dim roundError As Double
Dim maxScen As Integer 'value of last scenario id
Dim sqlstmt As String
Dim firstTime As Integer
' connect to the Access database
Set cn = New ADODB.Connection
cn.Open "Provider=Microsoft.Jet.OLEDB.4.0; " & _
"Data Source=C:\CAS\cost_accounting.mdb;"
'open a recordset
Set rs = New ADODB.Recordset
Set rs2 = New ADODB.Recordset
Set rs3 = New ADODB.Recordset
DoCmd.SetWarnings (No)
maxScen = DLookup("[Max Scen]", "Max Scen Id")
i = 1
firstTime = 1
sqlstmt = "UPDATE [CURR_SCEN_ID] SET[currScenID] = " & [i]
DoCmd.RunSQL sqlstmt
With rs
.Open "SELECT Sum(WORK_LEDGER.SUM) as Expr1, WORK_LEDGER.REK_NR, WORK_LEDGER.CC_NR, WORK_LEDGER.REVERSE_ENTRY, WORK_LEDGER.EURO_CODE, WORK_LEDGER.COST_TYPE FROM (CURR_SCEN_ID INNER JOIN SCENARIO ON CURR_SCEN_ID.CurrScenID = SCENARIO.ScenID)" & _
"INNER JOIN WORK_LEDGER ON SCENARIO.CC_NR = WORK_LEDGER.CC_NR GROUP BY WORK_LEDGER.REK_NR, WORK_LEDGER.CC_NR, WORK_LEDGER.REVERSE_ENTRY, WORK_LEDGER.EURO_CODE, WORK_LEDGER.COST_TYPE HAVING (((WORK_LEDGER.REVERSE_ENTRY)=-1));", cn, , , adCmdText
With rs2
.Open "SELECT Sum(WORK_LEDGER.SUM) as Expr1, WORK_LEDGER.REK_NR, SCENARIO.CC_NR, WORK_LEDGER.EURO_CODE FROM (CURR_SCEN_ID INNER JOIN SCENARIO ON CURR_SCEN_ID.CurrScenID = SCENARIO.ScenID)" & _
"INNER JOIN WORK_LEDGER ON SCENARIO.CC_NR = WORK_LEDGER.PREV_CC WHERE (((WORK_LEDGER.REVERSE_ENTRY)=0)) GROUP BY WORK_LEDGER.REK_NR, SCENARIO.CC_NR, WORK_LEDGER.EURO_CODE;", cn, , , adCmdText
Do While i <= maxScen
Do While rs.EOF = False And rs2.EOF = False
sumTegen = rs.Fields(0)
sumBoek = rs2.Fields(0)
roundError = Round((sumTegen + sumBoek), 2)
If firstTime = 1 Then
rs3.Open "WORK_LEDGER", cn, adOpenKeyset, adLockOptimistic, adCmdTable
firstTime = 9
End If
If roundError <> 0 Then
With rs3
.AddNew
.Fields("REK_NR") = rs.Fields(1)
.Fields("CC_NR") = "900006"
.Fields("SUM") = -roundError
.Fields("EURO_CODE") = rs.Fields(4)
.Fields("PREV_CC") = rs.Fields(2)
.Fields("COST_TYPE") = rs.Fields(5)
.Fields("REVERSE_ENTRY") = 0
.Update
End With
End If
rs.MoveNext
rs2.MoveNext
Loop
i = i + 1
sqlstmt = "UPDATE [CURR_SCEN_ID] SET[currScenID] = " & [i]
DoCmd.RunSQL sqlstmt
rs.Requery
rs2.Requery
Loop
rs.Close
Set rs = Nothing
rs2.Close
Set rs2 = Nothing
rs3.Close
Set rs3 = Nothing
cn.Close
Set cn = Nothing
End With
End With
End Sub