在Access VBA中的strSQL中循环date

我在Access中有这样的代码:

Sub SampleReadCurve() Dim rs As Recordset Dim iRow As Long, iField As Long Dim strSQL As String Dim CurveID As Long Dim MarkRunID As Long Dim MaxOfMarkAsofDate As Date CurveID = 15 MaxOfMarkAsofDate = #7/22/2015# strSQL = "SELECT * FROM VolatilityOutput WHERE CurveID=" & CurveID & " AND MaxOfMarkAsofDate=#" & MaxOfMarkAsofDate & "# ORDER BY MaxOfMarkasOfDate, MaturityDate" Debug.Print strSQL Set rs = CurrentDb.OpenRecordset(strSQL, Type:=dbOpenDynaset, Options:=dbSeeChanges) If rs.RecordCount <> 0 Then rs.MoveFirst Debug.Print vbCrLf Debug.Print "First", rs.Fields("ZeroCurveID"), rs.Fields("MaturityDate"), rs.Fields("ZeroRate"), rs.Fields("DiscountFactor") rs.MoveLast Debug.Print "Last", rs.Fields("ZeroCurveID"), rs.Fields("MaturityDate"), rs.Fields("ZeroRate"), rs.Fields("DiscountFactor") Debug.Print "There are " & rs.RecordCount & " records and " & rs.Fields.Count & " fields." Dim BucketTermAmt As Long Dim BucketTermUnit As String Dim BucketDate As Date Dim MarkAsOfDate As Date Dim InterpRate As Double Dim I As Integer BucketTermAmt = 3 BucketTermUnit = "m" BucketDate = DateAdd(BucketTermUnit, BucketTermAmt, MaxOfMarkAsofDate) InterpRate = CurveInterpolateRecordset(rs, BucketDate) Debug.Print BucketDate, InterpRate End If End Sub 

表VolatilityOutput有一个关联值的date列表。 此代码使用表中find的最接近的值为给定的MaxofMarkAsofDate插值。

现在,我从表中selectMaxofMarkAsofDate作为strSQL语句的一部分。 该代码返回#7/22/2015#的正确值。

但是,我需要获得#7/22/2015#之前的76个date的值。 我可以通过手动input每个date的#7/21/2015#,#7/20/2015#等来完成。 如果可能的话,我想尽快地做到这一点。 我想要使​​用循环,但是我不知道如何在Access中将循环与strSQL语句结合起来。

 CurveID = 15 Dim i As Integer For i = 0 to 76 MaxOfMarkAsofDate = #7/22/2015# - i 'Your inner code here ' Next i End Sub