StrSQL插入到VBA中引发错误

我试图插入一些新的logging到访问数据库。

这是我的代码,

' OPEN ACCESS APPLICATION Set objAccess = CreateObject("Access.Application") objAccess.OpenCurrentDatabase DatabasePath ' OPEN INTERNAL DATABASE Set db = objAccess.CurrentDb BuName = Ws.Sheets("Config").Range("T1").Value RepName = Ws.Sheets("Config").Range("T2").Value NumberofUniqueSheets = Ws.Sheets("Config").Range("T3").Value For i = 1 To NumberofUniqueSheets CmpValue = Ws.Sheets("Config").Range("U1").Value ShtNamedec = Split(CmpValue, "$")(0) HeadRow = Split(CmpValue, "$")(1) AddInfo = Split(CmpValue, "$")(2) DateInfo = Split(CmpValue, "$")(3) ' PREPARE STATEMENT strSQL = "PARAMETERS [BusinessUnitparam] TEXT(255), [ReportNameparam] TEXT(255),[SheetNameparam] TEXT(255), [HeaderRowparam] INTEGER, [AdditionalInfoparam] TEXT(255), [DateRequiredinfoparam] TEXT(255);" _ & "INSERT INTO ReportTypes ([BusinessUnit], [ReportName], [SheetName], [HeaderRow], [AdditionalInfo], [DateRequiredinfo]);" ' BUILD TEMP QUERYDEF Set qdef = db.CreateQueryDef("", strSQL) ' BIND PARAMS TO VARIABLES qdef!BusinessUnitparam = BuName qdef!ReportNameparam = RepName qdef!SheetNameparam = ShtNamedec qdef!HeaderRowparam = HeadRow qdef!AdditionalInfoparam = AddInfo qdef!DateRequiredinfoparam = DateInfo ' EXECUTE ACTION QUERY qdef.Execute Next Set qdef = Nothing Set db = Nothing Set objAccess = Nothing 

我在Build Temp QueryDef语句中遇到一个错误,错误是“

插入语句中的语法错误。

`我将这些值添加到插入语句中,如下所示

 strSQL = "PARAMETERS [BusinessUnitparam] TEXT(255), [ReportNameparam] TEXT(255),[SheetNameparam] TEXT(255), [HeaderRowparam] INTEGER, [AdditionalInfoparam] TEXT(255), [DateRequiredinfoparam] TEXT(255);" _ & "INSERT INTO ReportTypes ([BusinessUnit], [ReportName], [SheetName], [HeaderRow], [AdditionalInfo], [DateRequiredinfo]) VALUES (BuName, RepName, ShtNamedec, HeadRow, AddInfo, DateInfo);" 

但是它给出了执行操作查询语句的另一个意思,表示参数太less了12.这里是表结构的参考 –

ReportTypes

此查询适用于数据表devise的参数:

 strSQL = "PARAMETERS [BusinessUnitparam] TEXT(255), [ReportNameparam] TEXT(255),[SheetNameparam] TEXT(255), [HeaderRowparam] INTEGER, [AdditionalInfoparam] TEXT(255), [DateRequiredinfoparam] TEXT(255);" _ & "INSERT INTO ReportTypes ([BusinessUnit], [ReportName], [SheetName], [HeaderRow], [AdditionalInfo], [DateRequiredinfo])" _ & "SELECT BusinessUnitparam AS Expr1, ReportNameparam AS Expr2, SheetNameparam AS Expr3, HeaderRowparam AS Expr4, AdditionalInfoparam AS Expr5, DateRequiredInfoparam as Expr6;" 

你的查询不好。

这个:

 INSERT INTO ReportTypes ([BusinessUnit], [ReportName], [SheetName], [HeaderRow], [AdditionalInfo], [DateRequiredinfo]) VALUES (BuName, RepName, ShtNamedec, HeadRow, AddInfo, DateInfo) 

不pipe用。

尽pipe这可能:

 "INSERT INTO ReportTypes ([BusinessUnit], [ReportName], [SheetName], [HeaderRow], [AdditionalInfo], [DateRequiredinfo]) VALUES ('" + BuName + "', '" + RepName + "', '" + ShtNamedec + "', " + HeadRow + ", '" + AddInfo + "', '" + DateInfo + "')" 

你可能会消除所有的参数分配的东西。 我不认为它在这里增值。