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

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

我正在尝试运行此代码以从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]"
sql vba forms ms-access access-vba
2个回答
0
投票

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

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

让我们知道您的身体情况如何。

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

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


0
投票

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

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

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