1

如果有人解决我的问题,我将不胜感激。我是与 Access 女士合作的新手,我仍然获得了有关其基本功能的经验。

我有一个表 MyItems。它的 2 个字段是:ItemCode 和 ItemName。ItemName 是一个很长的文本(备忘录类型)。我还有一个查询和一个包含许多字段的表单。表单的记录源也包含许多字段。所有这些东西(与 1 个字段相关联)具有相同或相似的名称,因此我无法很好地区分它们。

我想要的是当我设置 ItemCode 的值(在未绑定的 Combobox 或名称为 ItemCode 的 Listbox 中)时,ItemName 的值将显示在控件中 - 也许是 TextBox。

我可以在 ListBox 中显示它的值(通过其行源中的 sql 查询),我对此没有任何问题,管理事件也没有问题,但是文本很长并且被剪切了。我知道不幸的是 ListBoxes 没有多行属性。所以也许最适合处理的控件是 TextBox。也许最合适的显示值的方法是在 TextBox 的控件源中使用 DLookUp 函数。但是在这个名称相似或相同的项目的海洋中,我无法处理它的语法,我一次又一次地尝试了很长时间。所以我有两个问题:

  1. 控件源中的 TextBox 控件和 DLookUp 函数是从表中提取长文本而不绑定的最佳方法,还是有更合适的控件(直接与 sql 查询一起使用)?

  2. DLookUp 的正确语法是什么?- ' ', " ", [ ], .Value, =, & 到底在哪里,我必须在哪里写表格或表格的路径,哪里会出错?如果我只写 [ItemCode] 它将与什么相关联 - 表单记录源、表格、表单控件或其他任何东西?如果有人为我的案例编写了正确的语法,或者如果他分享了一个包含大量使用 DLookUp 示例的链接,我将不胜感激。我发现的那些并不让我满意。

4

1 回答 1

0
  1. 绑定控件或未绑定控件。如果未绑定,则需要使用 VBA 代码或DLookup在控件源中加载文本。没有其他选择。
    就个人而言,我宁愿使用 , 的AfterUpdate事件ItemCode并在那里打电话DLookup,但这是一个偏好问题。

  2. 2.

没那么复杂。您基本上在 3 个参数中有 SQL 查询的 SELECT、FROM、WHERE 部分。[]包含空格或其他特殊字符的所有标识符以及引用表单控件时都需要。

=DLookup("ItemName", "[my Table]", "ItemCode = '" & [ItemCode] & "'")

''如果是文本,则需要单引号ItemCode,而不是数字。

您也可以使用双引号(转义),但可读性要差得多。

=DLookup("ItemName", "[my Table]", "ItemCode = """ & [ItemCode] & """")

现在[ItemCode]从哪里来?

  • Access 首先在窗体上查找名称为 的控件ItemCode
  • 如果没有,它会ItemCode在表单的RecordSource中查找一个字段。

这些是唯一[ItemCode]可以评估的方法。为避免混淆,建议使用与其源字段相同的名称来命名绑定控件。

上面的语法只有在所有内容都在同一个表单上时才有效。如果[ItemCode]在不同的表单上,或者您从查询中引用它,则使用

=DLookup("ItemName", "[my Table]", "ItemCode = '" & Forms![my Form]![ItemCode] & "'")

对于更复杂的子表单情况,请参阅参考表单和子表单属性和控件

并在 VBA (in ItemCode_AfterUpdate) 中使用它:

Me!ItemName = DLookup("ItemName", "[my Table]", "ItemCode = '" & Me![ItemCode] & "'")
于 2016-03-22T10:16:34.963 回答