Access VBA:查询输入必须至少包含一个表或查询

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Access VBA:查询输入必须至少包含一个表或查询相关的知识,希望对你有一定的参考价值。

我正在尝试对按钮进行编码,以根据用户输入的ID更新行。 ID是表生成的自动编号字段。用户可以使用另一个按钮创建行,但是当他们需要纠正错误时,我希望他们能够使用正确的信息来更新行。但是,我的代码给了我标题错误。

这是“更新”按钮:

Private Sub Command133_Click()

    Dim dbsCurrent As Database
    Set dbsCurrent = CurrentDb

    dbsCurrent.Execute " INSERT INTO tbl_Downtime " _
    & "(job, suffix, production_date, reason, downtime_minutes, comment) VALUES " _
    & "('" & Me.Text116 & "','" & Me.Text118 & "','" & Me.Text126 & "','" & Me.Text121 & "','" & Me.Text123 & "','" & Me.Text128 & "') WHERE ID='" & Me.Text135 & "';"

    Call ClearControl(Me.Text116)
    Call ClearControl(Me.Text118)
    Call ClearControl(Me.Text126)
    Call ClearControl(Me.Text121)
    Call ClearControl(Me.Text123)
    Call ClearControl(Me.Text128)

End Sub
答案

似乎问题与SQL语句末尾的WHERE语句有关。使用INSERT INTO ... VALUES ...方法可插入提供的值的单行,因此拥有WHERE子句是没有意义的。

相反,如果您尝试在现有表中插入一个或多个行的值,那么您想要编写类似以下内容的SQL:

 "INSERT INTO tbl_Downtime (job, suffix, production_date, reason, downtime_minutes, comment)
 SELECT '" & Me.Text116 & "', '" ... [your other fields go here] ... "'
 FROM [src_table] As t
 WHERE t.ID = '" & Me.Text135 & "';"

编辑如果您要更新现有行中的值,而不是尝试使用新值添加新行,那么您将需要类似以下内容:

"UPDATE tbl_Downtime SET job = '" & Me.Text116 & "', suffix = '" & Me.Text118 & "', production_date = #" & Me.Text126 & "#, reason = '" & Me.Text121 & "', downtime_minutes = " & Me.Text123 & ", comment = '" & Me.Text128 & "' WHERE t.ID = '" & Me.Text135 & "';"
另一答案

我一直试图导入Excel电子表格以访问2010“查询输入必须至少包含一个表或查询”。请问我可以为这个问题寻求帮助吗?

以上是关于Access VBA:查询输入必须至少包含一个表或查询的主要内容,如果未能解决你的问题,请参考以下文章

收到错误“查询输入必须包含至少一个表或查询”。

“查询输入必须至少包含一个表或查询”添加“INSERT INTO”语句时出错

在 VBA 中不存在的地方使用插入

如何在 MS Access 中向 SQL 查询添加自定义行?

MS Access 2010 vba 查询

Microsoft Access 数据库引擎找不到输入表或查询