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

问题描述 投票:0回答:2

我正在尝试对按钮进行编码,以根据用户输入的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
vba sql-update ms-access-2010
2个回答
0
投票

似乎问题与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 & "';"

0
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.