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

Ms access 在ms access中处理长文本的最佳实践,ms-access,textbox,memo,longtext,Ms Access,Textbox,Memo,Longtext,如果有人能解决我的问题,我将非常感激。 我是Ms Access的新手,在其基本功能方面仍有经验 我有一张桌子。其中2个字段是:ItemCode和ItemName。ItemName是一个很长的文本(备忘录类型)。我还有一个查询和一个包含许多字段的表单。表单的记录源也由许多字段组成。所有这些东西(与1个字段关联)都有相同或相似的名称,因此我无法很好地区分它们 我想要的是,当我设置ItemCode的值(在名为ItemCode的未绑定组合框或列表框中)时,ItemName的值将显示在控件(可能是文本框)

如果有人能解决我的问题,我将非常感激。 我是Ms Access的新手,在其基本功能方面仍有经验

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

我想要的是,当我设置ItemCode的值(在名为ItemCode的未绑定组合框或列表框中)时,ItemName的值将显示在控件(可能是文本框)中

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

  • 控制源中的TextBox控件和DLookUp函数是从表中提取长文本而无需绑定的最佳方法,还是有更合适的控件(直接用于sql查询)

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

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

  • 2. 没那么复杂。基本上,SQL查询的SELECT、FROM、WHERE部分位于3个参数中<代码>[]用于包含空格或其他特殊字符的所有标识符,以及在引用表单控件时

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

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

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

    • Access首先在名为
      ItemCode
      的表单上查找控件
    • 如果没有,它将在表单的记录源中查找字段
      ItemCode
    这些是评估
    [ItemCode]
    的唯一方法。为避免混淆,建议使用与其源字段相同的名称命名绑定控件

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

    =DLookup("ItemName", "[my Table]", "ItemCode = '" & Forms![my Form]![ItemCode] & "'")
    
    有关子窗体的更复杂情况,请参见

    并在VBA中使用它(在更新后的项目代码中):

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

  • 2. 没那么复杂。基本上,SQL查询的SELECT、FROM、WHERE部分位于3个参数中<代码>[]用于包含空格或其他特殊字符的所有标识符,以及在引用表单控件时

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

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

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

    • Access首先在名为
      ItemCode
      的表单上查找控件
    • 如果没有,它将在表单的记录源中查找字段
      ItemCode
    这些是评估
    [ItemCode]
    的唯一方法。为避免混淆,建议使用与其源字段相同的名称命名绑定控件

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

    =DLookup("ItemName", "[my Table]", "ItemCode = '" & Forms![my Form]![ItemCode] & "'")
    
    有关子窗体的更复杂情况,请参见

    并在VBA中使用它(在更新后的项目代码中):


    非常感谢你!现在事情变得更加清楚和容易理解了。代码起作用了。我还没试过用“.”。但是有一件事我应该纠正,可能是因为ms access版本,我的默认值,或者是否使用vba/设计模式-函数中的分隔符是“;”-不是“,@Peter:是的,例如在德语access中,参数分隔符是;而不是,在窗体或查询中使用函数时。但不是在VBA中。非常感谢!现在事情变得更加清楚和容易理解了。代码起作用了。我还没试过用“.”。但是有一件事我应该纠正,可能是因为ms access版本,我的默认值,或者是否使用vba/设计模式-函数中的分隔符是“;”-不是“,@Peter:是的,例如在德语access中,参数分隔符是;而不是,在窗体或查询中使用函数时