如何在访问表单上的文本框的验证规则中使用 DLookup
Posted
技术标签:
【中文标题】如何在访问表单上的文本框的验证规则中使用 DLookup【英文标题】:How do I go about using DLookup in a validation rule of a text box on a form in access 【发布时间】:2009-11-03 13:49:41 【问题描述】:我正在尝试将 DLookup 用于 Access 中表单上的 TextBox 的 ValidationRule。
根据上找到的示例 MSDN 我用过
dlookup("ABKUERZUNG", "tblABKUERZUNG", "ABKUERZUNG=[Forms]![frmMutBetriebspunkt]![BP_ABKUERZUNG]") is null
这不起作用:您输入的表达式包含无效语法。
现在,如果有人知道这个无效语法到底是什么以及在哪里,我将不胜感激。
谢谢 雷内
编辑:将错误的 ' 更正为 "(这不是问题的原因)
【问题讨论】:
您粘贴的示例有效。我复制并粘贴了所有对象名称。你有验证文本吗? 【参考方案1】:如果在代码中使用函数,参数分隔符是逗号(,),但在GUI 编辑器中是分号(;)。这可能是您的语法错误。
那就试试吧:
=Dlookup("field";"table";"where")
【讨论】:
就是这样!非常感谢你。为了记录,我使用了 =DLookUp("ABKUERZUNG";"tblBETRIEBSPUNKT";"ABKUERZUNG=[Forms]![frmMutBetriebspunkt]![BP_ABKUERZUNG]") 为 Null 以确保 ABKUERZUNG 不存在于表。 呃,什么?哪里 ”;”函数参数的有效分隔符?我无法让它在 A2003 的任何地方被接受。这可能是本地化问题吗? 如果在计算的表单域或报表域中使用函数,则必须使用 ;就像在 Excel 中一样。但我只能说德语版的 Office。【参考方案2】:已编辑
代码:
If IsNull(dlookup( _
"ABKUERZUNG", "tblABKUERZUNG", _
"ABKUERZUNG=[Forms]![frmMutBetriebspunkt]![BP_ABKUERZUNG]")) Then
对于验证规则:
dlookup("ABKUERZUNG", "tblABKUERZUNG", "ABKUERZUNG=[Forms]![frmMutBetriebspunkt]![BP_ABKUERZUNG]")=Null
【讨论】:
我正在尝试将表达式输入到 ValidationRule 中,并尝试将表达式放入 IF .. THEN .. TRUE END IF 中仍然会带来相同的错误消息。 另外,如果我使用表格的数字主键而不是 ABKUERZUNG,它不会改变任何东西。 道歉 - 这种格式不需要分隔符。我注意到你在 Where 语句的开头有一个单引号,它应该是一个双引号 (")。你在哪里有这个代码?在一个模块中? 当我手动将文本复制到 *** 时,' 是一个错误。在原始代码中,我有一个“。代码 是 frmMutBetriebspunkt 表单上的文本框的 ValidationRule。【参考方案3】:您可能想要隔离您为过滤器创建的字符串,因此您可以在即时窗口中检查该值是否符合您的预期。
dim sFilter as String
sFilter = "ABKUERZUNG='" & [Forms]![frmMutBetriebspunkt]![BP_ABKUERZUNG] & "'"
dlookup("ABKUERZUNG", "tblABKUERZUNG", sFilter) is null
【讨论】:
这不是真的。在即时窗口中尝试一下。 所以在编码时习惯这样做,我没有意识到它不是必需的。进行了更改。 是的,但是您依赖 Access 表达式服务来正确解析 DLookup() 代码内部的引用,而您无法控制。我几乎从不使用 DLookup(),但如果我这样做了,我会在将任何内容传递给它之前解析控件引用。以上是关于如何在访问表单上的文本框的验证规则中使用 DLookup的主要内容,如果未能解决你的问题,请参考以下文章