MS Access 2007 OpenForm 方法,无法获取 where 子句以产生正确的结果
Posted
技术标签:
【中文标题】MS Access 2007 OpenForm 方法,无法获取 where 子句以产生正确的结果【英文标题】:MS Access 2007 OpenForm method, can't get the where clause to produce the correct result 【发布时间】:2011-10-05 17:08:17 【问题描述】:我无法使用 OpenForm 方法打开加载了正确记录的表单。我将尽我所能在这里提供详细信息:
“源”表单基于表 A,它是只读的。源表单上的按钮用于打开用于编辑记录的“目标”表单,同样来自表 A。
我尝试使用向导创建基于主键相等打开表单的按钮。向导的结果是,无论源表单的上下文中有什么记录,目标表单只会加载表 A 中的第一条记录。
我尝试使用具有以下变体的程序:
Dim frm As String, whr As String
frm = "Target Form"
whr = "Forms![Source Form]!ID = Forms![Target Form]!ID"
'whr = "[ID] = [ID]"
'whr = "[ID] = Forms![Target Form]!ID"
DoCmd.OpenForm frm, acNormal, , whr, , , 1
我可以只获取第一条记录以加载到目标表单中,也可以获取一条新记录以加载到目标表单中。但是我无法获取源表单的加载记录来确定加载到目标表单中的记录。
感谢您的帮助
【问题讨论】:
【参考方案1】:我想你已经接近了。您希望 WhereCondition 与查询目标表单的记录源的 WHERE 子句相同,但没有 WHERE 一词。
Dim frm As String, whr As String
frm = "Target Form"
whr = "[ID] = " & Me.ID
Debug.Print "whr: " & whr
DoCmd.OpenForm frm, acNormal, , whr
我打算将 Me.ID 作为名称为 ID 并绑定到 Source Form 当前记录中的字段的控件的值。 Me 是“这种形式”的简写。它有用的一个原因是,如果您以后决定给表单起一个不同的名称,您就不必修改代码。
我添加了 Debug.Print 语句,以便您可以切换到即时窗口 (Ctrl+g),并复制 whr 字符串,然后将其粘贴到基于目标表单使用的相同记录源的新查询中。如果您在目标表单打开时仍然没有显示正确的记录,这可能会有所帮助。
您的版本还包括 1 作为 OpenArgs 到 OpenForm。我没有看到你是如何使用它的,所以把它关掉了。如果 Target Form 包含一个对 OpenArgs 执行某些操作的事件过程,请确保它不会覆盖您的 WhereCondition。
【讨论】:
以上是关于MS Access 2007 OpenForm 方法,无法获取 where 子句以产生正确的结果的主要内容,如果未能解决你的问题,请参考以下文章
MS Access OpenForm acDialog 选项似乎不起作用
ms-access 2007 运行时和 lockWindowUpdate