在ms-access中处理长文本的最佳实践

时间:2016-03-21 15:00:13

标签: ms-access textbox memo longtext

如果有人解决了我的问题,我将非常感激。 我是一名与Ms Access合作的新人,我仍然积累了基本功能的经验。

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

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

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

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

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

1 个答案:

答案 0 :(得分:0)

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

  2. 2。

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

    []

    如果=DLookup("ItemName", "[my Table]", "ItemCode = '" & [ItemCode] & "'") 是文字,则需要使用单引号'',而不是数字。

    您也可以使用doubled(转义)双引号,但这样的可读性要低得多。

    ItemCode

    现在=DLookup("ItemName", "[my Table]", "ItemCode = """ & [ItemCode] & """") 来自哪里?

    • Access首先在名称为[ItemCode]的表单上查找控件
    • 如果没有,则会在 RecordSource 表单中查找字段ItemCode

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

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

    [ItemCode]

    有关子表单的更复杂情况,请参阅Refer to Form and Subform properties and controls

    并在VBA(=DLookup("ItemName", "[my Table]", "ItemCode = '" & Forms![my Form]![ItemCode] & "'") )中使用它:

    ItemCode_AfterUpdate