我有一个项目,其中 4 个预定付款与 4 个“合同”日期相关联,存储在 tblPaySch 但是,有时我们会在不同日期(“实际”)日期收到不同金额的付款(存储在 tblTrans)
我正在尝试定义 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
提前谢谢你,请原谅任何明显的新手错误,这是我的第一个数组函数。