ms-access - 使用表单更新列表框中的查询对象。 (MS-Access)

标签 ms-access vba

目标是创建一个查询表中定义为“事件”的所有对象的表单。该查询在表单上显示为列表框。我希望 Access 此表单的用户能够选择该查询的对象,然后通过从第二个列表框中选择操作来更新表,然后单击提交按钮。

视觉上: enter image description here

我认为点击 VBA 看起来像这样:

Private Sub ActionAdminbtn_Click()
Set Actiontbl = CurrentDb.OpenRecordset("SELECT * FROM [Actiontbl]")
Actiontbl.Edit
Actiontbl![Progress] = Me.AdminActionSelect
Actiontbl.Update
Actiontbl.Close
Me.Refresh
End Sub

这几乎对我有用,但是我缺少从列表框中选择对象的代码行。现在,一旦单击操作并提交,我只更改表中的第一条记录。不是想要的那个。关于如何修改所选对象有什么建议吗?

编辑以下内容以包含更多内容: 这是我正在尝试编辑的表格。 enter image description here

最佳答案

假设您的第一个列表框绑定(bind)到屏幕截图(隐藏在表单上)的唯一键 ID,请考虑使用 WHERE 子句进行更新 SQL 查询。下面演示了一个使用 QueryDef 调用的参数化查询对象。

SQL (另存为存储查询)

PARAMETERS [ProgressParam] TEXT(255), [ActionIDParam] Long;
UPDATE [Actiontbl] SET [Progress] = [ProgressParam]
WHERE ID = [ActionIDParam]

VBA

Private Sub ActionAdminbtn_Click()
    Dim qdef As QueryDef

    Set qdef = CurrentDb.QueryDefs("myUpdateQuery")
    ' BIND PARAMS
    qdef![ProgressParam] = Me.AdminActionSelect
    qdef![ActionIDParam] = Me.FirstListBoxName

    ' EXECUTE ACTION
    qdef.Execute dbFailOnError

    Set qdef = Nothing

    Me.Requery
End Sub

或者,如果您想继续使用 Recordset Update 方法,请打开以 ActionID 项为条件的查询,仍然假设列表框的值绑定(bind)到隐藏 ID 字段。

Private Sub ActionAdminbtn_Click()
   Dim strSQL As String
   Dim Actiontbl As Recordset

   strSQL = "SELECT * FROM [Actiontbl] WHERE ID=" & Me.FirstListBoxName

   Set Actiontbl = CurrentDb.OpenRecordset(strSQL)

   Actiontbl.Edit
   Actiontbl![Progress] = Me.AdminActionSelect
   Actiontbl.Update
   Actiontbl.Close

   Set Actiontbl = Nothing

   Me.Refresh
End Sub

关于ms-access - 使用表单更新列表框中的查询对象。 (MS-Access),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51198296/

相关文章:

arrays - 用vba中其他数组的内容过滤二维数组的最快方法

c# - 查询数据库的问题 - 仅适用于我的电脑

r - 将 R 连接到 MS Access 64 位 Windows

sql - ADODB SQL 语法 - 使用 Excel 工作表 Access 表内连接

vba - 哪个 Excel 公式可以在没有 VBA UDF 的情况下执行此操作?

vba - 在VBE中查找未知方法或关键字

sql-server:我如何知道谁在我的数据库中?

sql - 字段不为空的行的 Access 计数

excel - 如何使用 INDEX/MATCH 找到正确的矩阵

excel - 将某个字符串从一列中的excel单元格复制到另一列