tblPaySch に保存された 4 つの「契約」日付に関連付けられた 4 つのスケジュールされた支払いがあるプロジェクトがあります。
4 つの日付 (ID 1 から 4 で識別) と予想金額を定義する配列を試みており、それを tblTrans と比較して予想支払額を超えているかどうかを確認し、超過している場合はその取引日を「実際の」日付。
配列に問題があるか、ループに問題があります。ID1 の結果 (つまり、従業員の予想される支払いとそれに一致した取引日) を取得できますが、他の 3 つの ID を取得できません。
GetDate(prjID) を使用してクエリで呼び出して、prjId を関数に渡します。
これが私のコードです:
'This function is a multidimensional array that can hold multiple values
Public Function GetDate(intID As Long) As Variant
Dim intTot As Long
Dim i As Integer
Dim i2 As Integer
'Define recordset to get expected payment data
Dim rsPrj As DAO.Recordset
Set rsPrj = CurrentDb.OpenRecordset("SELECT * FROM tblPaySch WHERE PrjID =" & intID, dbOpenSnapshot)
'Define recordset to get transaction data
Dim rs As DAO.Recordset
Set rs = CurrentDb.OpenRecordset("Select * from tblTrans where PrjID=" & intID, dbOpenSnapshot)
'Store milestone payments in RA
Dim RA(0 To 4, 0 To 4, 0 To 4) As Variant
RA(0, 0, 0) = rsPrj!MSCdbID 'payment Id, 4 of which are associated with each PrjID
RA(0, 1, 0) = rsPrj!PayIncGST 'expected payment amount, of 4 different totals
RA(0, 0, 1) = rs!RefDate 'Actual date from tblTrans
intTot = 0
Do While rs.EOF
intTot = intTot + rs!Amt 'refers to the amount of the transaction
'-----Check for milestone exceeded
For i = 0 To 4
For i2 = 0 To 4
If IsNull(RA(i, i2, 1) And RA(i, i2, 0) <= intTot) Then
RA(i, i2, 1) = rs!RefDate
End If
Next i2
Next i
Loop
GetDate = RA(0, 0, 1)
Debug.Print RA(1, 0, 0)
Debug.Print RA(0, 1, 0)
Debug.Print RA(0, 0, 1)
End Function
前もって感謝します。明白な初心者の間違いを許してください。これは私の初めての配列関数です。