【发布时间】:2017-11-16 04:12:42
【问题描述】:
我正在尝试向 access 数据库中插入一些新记录。
这是我的代码,
' 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);"
但它给出了另一个关于执行操作查询的语句,说预期的参数太少 12. 这是供参考的表结构 -
【问题讨论】:
-
好吧,你错过了声明的后半部分。 See here
-
我认为您需要在插入后添加一个值声明,例如:stackoverflow.com/questions/1783486/…
-
@majjam 随意将其写为答案,这样我们就可以看到问题已得到解答。
-
更新了问题。向其中添加值会在下一行引发另一个错误。说参数太少。预计 12 日。
-
没有。您没有为我提供足够的信息来确保我可以正确回答(我没有表格结构),并且您在我上次发表评论后仅尝试了两分钟。如果您希望我回答,请提供表格结构。