我在訪問VBA下面的代碼:STRSQL在Access VBA不會Executre
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/31/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
本來,我只有一個WHERE在STRSQL聲明條款。由於添加第二個條件(MaxOfMarkAsofDate =#7/31/2015#),代碼不再執行。據我可以告訴它應該工作。我究竟做錯了什麼?
您可以嘗試建立與字符串部分字符串。更改爲'Dim MaxOfMarkAsofDate As String:MaxOfMarkAsofDate =「#7/31/2015#」>' – Jeeped