I am needing help with the following code. I am wanting to create an array of accounts using the account number as the identifier, but the account number is to big. I receive an overflow error. Is there any other way of setting up an array so that i can use the account number as the identifier.
Code:
Option Compare Database
Option Explicit
Type AccMonthTotals
Deposits As Currency
Payments As Currency
Withdrawals As Currency
End Type
Type Account
'AccNumber As String
MonthTotals2010(3 To 12) As AccMonthTotals
MonthTotals2011(1 To 5) As AccMonthTotals
End Type
Public Sub AdminFees2()
Dim db As DAO.Database
Dim rs As DAO.Recordset
Dim strSQL As String
Dim Accounts() As Account
Dim AccNumber As String
Set db = CurrentDb()
strSQL = "SELECT sum([Tran Amount]) AS TranTotal, month([Time]) AS TransMonth, year([Time]) As TransYear, [Acc# No#],[Tran Type] FROM Transactions GROUP BY [Acc# No#],[Tran Type], year([Time]),month([Time])"
Set rs = db.OpenRecordset(strSQL)
rs.MoveLast
If rs.RecordCount > 0 Then
rs.MoveFirst
Do While Not rs.EOF
counter = counter + 1
AccNumber = rs![Acc# No#]
If rs!TransYear = "2010" Then
If rs![Tran Type] = "Deposit" Then
Accounts(AccNumber).MonthTotals2010(rs![TransMonth]).Deposits = rs![TranTotal]
ElseIf rs![Tran Type] = "Payment" Then
Accounts(AccNumber).MonthTotals2010(rs![TransMonth]).Payments = rs![TranTotal]
ElseIf rs![Tran Type] = "Withdrawal" Then
Accounts(AccNumber).MonthTotals2010(rs![TransMonth]).Withdrawals = rs![TranTotal]
End If
ElseIf rs!TransYear = "2011" Then
If rs![Tran Type] = "Deposit" Then
Accounts(AccNumber).MonthTotals2011(rs![TransMonth]).Deposits = rs![TranTotal]
ElseIf rs![Tran Type] = "Payment" Then
Accounts(AccNumber).MonthTotals2011(rs![TransMonth]).Payments = rs![TranTotal]
ElseIf rs![Tran Type] = "Withdrawal" Then
Accounts(AccNumber).MonthTotals2011(rs![TransMonth]).Withdrawals = rs![TranTotal]
End If
End If
rs.MoveNext
Loop
End If
rs.Close
Set rs = Nothing
Set db = Nothing
MsgBox "Complete"
End Sub
Last edited: