访问VBA中的StrSQL错误

我有一个Access VBA子程序,如下所示:

Sub SampleReadCurve() Dim rs As Recordset Dim iRow As Long, iField As Long Dim strSQL As String strSQL = "SELECT * FROM dbo_VolatilityInput5" & "ORDER BY MaturityDate" Set rs = CurrentDb.OpenRecordset(strSQL, Type:=dbOpenDynaset, Options:=dbSeeChanges) If rs.RecordCount <> 0 Then Do While Not rs.EOF Dim BucketTermAmt As Long Dim BucketTermUnit As String Dim BucketDate As Date Dim MarkAsOfDate As Date Dim InterpRate As Double MarkAsOfDate = rs!MarkAsOfDate BucketTermAmt = 3 BucketTermUnit = "m" BucketDate = DateAdd(BucketTermUnit, BucketTermAmt, MarkAsOfDate) InterpRate = CurveInterpolateRecordset(rs, BucketDate) Debug.Print BucketDate, InterpRate rs.MoveNext Loop End If End Sub 

dbo_Volatility5是Access数据库中的一个表。

但是,当我执行这个代码时,它给了我一个运行时错误“FROM子句中的语法错误”为strSQL语句。 至于我可以告诉strSQL语法是正确的。 我究竟做错了什么?

您在dbo_VolatilityInput5之后缺less一个空格。 连接多个string以形成SQL查询时常见的错误。

我更喜欢把每个部分放在一个新的线上:

 strSQL = "SELECT * " strSQL = strSQL & "FROM dbo_VolatilityInput5 " strSQL = strSQL & "ORDER BY MaturityDate" 

等等

只要纠正你的代码,那样:

 strSQL = "SELECT * FROM dbo_VolatilityInput5 ORDER BY MaturityDate" 

没有必要连接你的string,因为它没有任何variables。 如果是这样,就像WHERE子句一样,执行如下操作:

 strSQL = "SELECT * FROM dbo_VolatilityInput5 " & some_variable & " ORDER BY MaturityDate" 

看到引号后的空格。