在MS Access VBA中运行SQL更新查询

时间:2018-01-04 20:26:20

标签: sql vba forms ms-access access-vba

我正在尝试运行此代码以从VBA触发更新查询。 Access给我一个语法错误。我怀疑这与我尝试使用带有表单的INNER JOIN运行更新查询这一事实有关。我可能会尽力做什么?

Private Sub Btn_Edit_Data_Click()

Dim db As DAO.Database
Dim UpdateQdf As DAO.QueryDef
Dim UpdateSQL As String

Set db = CurrentDb()
Set UpdateQdf = db.QueryDefs("Qry_Update_Counterparty_Data")

UpdateSQL = "UPDATE Repository_Redux INNER JOIN [Forms]![Frm_Reject_Button] ON Repository_Redux.[Counterparty ID] = [Forms]![Frm_Reject_Button]![Txt_CP_ID] " & _
            "SET Repository_Redux.[Counterparty Name] = [Forms]![Frm_Reject_Button]![Txt_CP_Name_Edit]"

UpdateQdf.SQL = UpdateSQL

DoCmd.OpenQuery "Qry_Update_Counterparty_Data"

Set db = Nothing
Set qdf = Nothing

End Sub

我这样解决了,谢谢大家:

 UpdateSQL = "UPDATE Repository_Redux SET Repository_Redux.[Counterparty Name] = [Forms]![Frm_Reject_Button]![Txt_CP_Name_Edit] WHERE Repository_Redux.[Counterparty ID] = [Forms]![Frm_Reject_Button]![Txt_CP_ID]"

2 个答案:

答案 0 :(得分:0)

不,您永远不能在查询中加入表单(或SELECT FROM a form)。您只能加入表格或其他查询。

但是,您可以尝试加入表单记录源。

答案 1 :(得分:0)

只是一个建议,我没试过......

在您的表单上,您有一个事件处理程序,它存储在您打算在查询中使用的表单中的值的全局变量(是的,我知道这是狡猾的)。然后,您可以定义一个读取全局变量的函数。然后,您可以在SQL查询中使用该函数。

告诉我们你是如何上场的。

谷歌搜索建议其他人尝试过这个

还有其他人有一个更好的“全局状态机”来将表单桥接到SQL吗?