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

时间:2009-07-13 15:14:52

标签: sql ms-access vba

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

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

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 & "')"

请帮忙

5 个答案:

答案 0 :(得分:4)

  1. DoCmd.RunSQL是一种方法,而不是属性。你不做“DoCmd.RunSQL = SomeSQL”你做“DoCmd.RunSQL someSQL”(没有等号)。
  2. DoCmd.RunSQL的错误处理非常糟糕,并且返回了无法提供信息的错误消息。您会发现使用CurrentDB.Execute
  3. 调试或捕获错误要容易得多

答案 1 :(得分:0)

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

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

答案 2 :(得分:0)

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

答案 3 :(得分:0)

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

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

答案 4 :(得分:0)

尝试在 之前添加空格。

正如Oorang所说,删除=符号

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