如果有人解决了我的问题,我将非常感激。 我是一名与Ms Access合作的新人,我仍然积累了基本功能的经验。
我有一张桌子MyItems。它的2个字段是:ItemCode和ItemName。 ItemName是一个非常长的文本(备注类型)。我还有一个查询和一个包含许多字段的表单。表单的记录源也包含许多字段。所有这些东西(与1个字段相关联)都具有相同或相似的名称,因此我无法很好地区分它们。
我想要的是当我设置ItemCode的值(在未绑定的Combobox或Listbox中,名称为ItemCode)时,ItemName的值将显示在控件中 - 也许是TextBox。
我可以在ListBox中显示它的值(通过其行源中的sql查询),我没有遇到任何问题,我对管理事件没有任何问题,但文本很长并且被剪切。我明白不幸的是ListBoxes没有多行属性。因此,最合适的控件可能是TextBox。也许最合适的显示方法是在TextBox的控件源中使用DLookUp函数。但是,在这个名称相似或相同的项目海洋中,我无法处理它的语法,我在很长一段时间内一次又一次地尝试。所以我有两个问题:
TextBox控件和DLookUp函数在其控件源中是从表中提取长文本而不进行绑定的最佳方法,还是有更合适的控件(直接用于sql查询)?
DLookUp的正确语法是什么? - 到底在哪里' '," ",[],。Value,=,&,我必须在哪里写表格或表格的路径以及错误的位置?如果我只是写[ItemCode]与它相关的东西 - 表单记录源,表,表单控件还是其他什么?如果有人为我的案例编写了正确的语法,或者他与大量使用DLookUp的示例共享链接,我将不胜感激。那些我发现的并不能让我满意。
答案 0 :(得分:0)
绑定控件或未绑定控件。如果未绑定,则需要在控制源中使用VBA代码或DLookup
加载文本。没有其他选择。
就个人而言,我宁愿使用AfterUpdate
的{{1}}事件,并在那里致电ItemCode
,但这是一个偏好问题。
它并不复杂。您基本上在3个参数中具有SQL查询的SELECT,FROM,WHERE部分。所有包含空格或其他特殊字符的标识符以及引用表单控件时都需要DLookup
。
[]
如果=DLookup("ItemName", "[my Table]", "ItemCode = '" & [ItemCode] & "'")
是文字,则需要使用单引号''
,而不是数字。
您也可以使用doubled(转义)双引号,但这样的可读性要低得多。
ItemCode
现在=DLookup("ItemName", "[my Table]", "ItemCode = """ & [ItemCode] & """")
来自哪里?
[ItemCode]
的表单上查找控件。 ItemCode
。 这些是ItemCode
可以评估的唯一方式。为避免混淆,建议使用与源字段相同的名称命名绑定控件。
上述语法仅在所有内容都在同一表单上时才有效。如果[ItemCode]
位于不同的表单上,或者您从查询中引用它,则使用
[ItemCode]
有关子表单的更复杂情况,请参阅Refer to Form and Subform properties and controls
并在VBA(=DLookup("ItemName", "[my Table]", "ItemCode = '" & Forms![my Form]![ItemCode] & "'")
)中使用它:
ItemCode_AfterUpdate