编译错误:参数不是可选的

Posted

技术标签:

【中文标题】编译错误:参数不是可选的【英文标题】:Compile error:Argument not optional 【发布时间】:2009-07-13 15:14:52 【问题描述】:

执行以下查询时出现上述错误:

DoCmd.RunSQL = "insert into tblContract (Empid,testid,Start1,Finish1,Store1,Start2,Finish2,Store2 )values ('" & Me.txtEmpNo.Value & "','" & Me.txtAutoNumber.Value & "','" & Me.txtContSunStart1.Value & "', '" & Me.txtContSunFinish1.Value & "','" & Me.txtContSunStore1.Value & "','" & Me.txtContSunStart2.Value & "', '" & Me.txtContSunFinish2.Value & "','" & Me.txtContSunStore2.Value & "')"

请帮忙

【问题讨论】:

这看起来很眼熟。和以前一样,你能告诉我们你的表的数据类型吗?另外,您能否发布一个带有 确实 工作的文字值的 INSERT 语句。 【参考方案1】:
    DoCmd.RunSQL 是一种方法而非属性。您不执行“DoCmd.RunSQL = SomeSQL”您执行“DoCmd.RunSQL someSQL”(无等号)。 DoCmd.RunSQL 的错误处理能力很差,并且返回的错误消息信息量不大。您会发现使用 CurrentDB.Execute 更容易调试或捕获错误

【讨论】:

另一种选择是我的SQLRun函数,它可以透明地替换DoCmd.RunSQL,如果用作函数也返回RecordsAffected:***.com/questions/343396/… NOI 但这有点像重新发明***。我不确定每个电话都需要包装。我想在某些情况下可能有意义。【参考方案2】:

你真的有DoCmd.RunSQL = someString 吗?那里有=?不会这样……

【讨论】:

【参考方案3】:

假设您的语法正确,您很可能有一个需要值的字段,但您已从目标字段列表中省略。这是表格设计器中的一个字段,在“常规”选项卡中将“必填”设置为Yes

如果您认为不是这样,我可能需要更多有关架构或查询的信息。

【讨论】:

【参考方案4】:

这可能不是问题。但是您可能希望确保您的输入不包含单引号。例如,如果 Me.txtContSunStore1 等于“Bob's Store”之类的内容,则该行会报错。虽然它可能会给你一个不同的错误。

我通常使用基于数据类型清理数据的函数来包装所有 SQL 值。

【讨论】:

【参考方案5】:

尝试在之前添加空格。

正如 Oorang 所说,删除 = 符号

编辑:另外请检查每个字段是否为文本类型。我猜 Empid 和 testid 字段是数字......

【讨论】:

以上是关于编译错误:参数不是可选的的主要内容,如果未能解决你的问题,请参考以下文章

访问编译错误:参数不是可选的

将数据从 Excel 导出到 Access - 错误:参数不是可选的

可选的反应路由器参数标记 GET 请求错误?

TypeScript面试题

允许 automake 生成可选的编译规则

Swift:添加可选整数