使用组合框中的值编辑从列表框中选择的记录中的字段

Posted

技术标签:

【中文标题】使用组合框中的值编辑从列表框中选择的记录中的字段【英文标题】:Edit a field in record(s) selected from a listbox with a value from a combobox 【发布时间】:2020-05-10 01:53:42 【问题描述】:

我正在研究一种方法来跟踪我办公室中一些纸质表格的工作流程。到目前为止,我有一个带有列表框的表单,它将显示所有不完整的文书工作。为了跟踪物理文书工作的移动位置,我想突出显示列表中的记录并将它们分配给员工 - 从当前值编辑 tblForms 中的字段“QCByName”(通常为空白)到从 tblStaff 中提取选项的组合框中选择的值。

带有列表框和组合框选择的表单:

不过,我在使用命令按钮的 VBA 代码时遇到了问题。我有一个来自其他人设计的旧数据库的不错的工作示例,但未能成功地将代码调整到我的类似情况。 This post 似乎很有帮助,但我无法使用它。

如果我尝试将列表框中的一行分配给某人,我会收到运行时错误:

3075:查询表达式“ID=15T362”中有语法错误(缺少运算符)

其中 15T362 是我选择的 FormNumber 行。我认为列表框未绑定,但主键和第一个(隐藏)字段是 ID。

这是当前代码。任何想法我做错了什么?非常感谢。

Private Sub cmdAssigntoQC_Click()
    Dim strSQL As String
    Dim tblForms As Recordset

If IsNull(Combo5) Then
    MsgBox "No Changes Made"

Else
    strSQL = "SELECT * FROM [tblForms] WHERE ID=" & List0
    Set tblForms = CurrentDb.OpenRecordset(strSQL)
    tblForms.Edit
    tblForms![QCByName] = Me.Combo5
    tblForms.Update
    tblForms.Close

Set tblForms = Nothing

Forms!frmOutstanding.L0Req
End If
End Sub

【问题讨论】:

也许 ID 值需要用单引号括起来? ID=" & List0 => ID='" & List0 & "'" ? 感谢您的建议!进步,至少。现在是运行时错误 3464:标准表达式中的数据类型不匹配。有任何想法吗?我会做一些搜索并检查现有代码是否不匹配。 很久没用Access了,请问ID列的数据类型是什么?我假设一个字符串,但它可能是表级别的数字。那或者可能不是ID,而是该列应该是FormNumber 如果 ID 是数字类型,列表框值必须是数字但您显示字符串。如果 BoundColumn 设置为 1,则应该从隐藏的 ID 列中提取值。 啊,好电话!是的,ID 是数字。我将 Dim strSQL As String 更改为 Dim strSQL As Long 但现在出现运行时错误 13:类型不匹配。我也可以将该列更改为 FormNumber,因为它是一个唯一值。也可能更容易将其作为该表的主键。简单地尝试了一下,但已经晚了,我可能没有好好考虑它。感谢您的建议! 【参考方案1】:

要从选定的列表框项中提取值,必须使用 Column 属性并通过索引引用列,索引从 0 开始:Me.List0.Column(0)

使用Me. 限定符不是必需的,但它会触发智能提示。

【讨论】:

谢谢!它现在正在工作。我不得不调整一些东西。在构建列表框时,我发誓我将 ID 列包含为隐藏,但是查看查询生成器 ID 列并没有出现在那里。所以Column(0) 实际上是FormNumber。我将strSQL 保留为字符串并将strSQL 更新为FormNumber='" & Me.List0.Column(0) & "'"。这会很好用,因为FormNumber 是一个唯一值,只对应一个记录。感谢@June7 和@Paul-t 的帮助。现在开始弄清楚如何使用多选列表框将更改应用于 2+ 选择!

以上是关于使用组合框中的值编辑从列表框中选择的记录中的字段的主要内容,如果未能解决你的问题,请参考以下文章

Csharp:根据组合框中的值加载选中的项目列表

使用组合框中的选择填充文本框中的计算字段

在数据表或连续表单视图中的表单上,我们如何将第二个组合框中的可能值基于第一个组合框中选择的值?

如何在 Access 中打开表单,自动选择组合框中的值并显示详细信息?

将组合框的值作为字段传递

在 Access 的组合框中自动选择一个值