Microsoft Access Where Condition 在子窗体中不起作用

Posted

技术标签:

【中文标题】Microsoft Access Where Condition 在子窗体中不起作用【英文标题】:Microsoft Access Where Condition doesn't works in a subform 【发布时间】:2017-05-02 15:48:40 【问题描述】:

我建立了一个名为:“clientlist”的表单:

我在点击时放置了一个带有 where 条件的宏:

="IDclient_logindata=" & [Maschere]![clientlist]![IDclient]

这意味着当我点击一个 id 客户端时,访问将打开另一个带有相应 ID 客户端的表单。例如,如果我点击 IDclient 3:

它打开另一个名为“client_logindata”的表单过滤到 IDclient_logindata 3。 然后,我构建了一个导航表单: 使用 clientlist 作为子表单。但是,当我单击一条记录时,任何记录,每次都会打开带有 IDclient_logindata 表单 = 1 的 client_logindata 表单,为什么它在子表单中不起作用? “导航表单”设计视图:

【问题讨论】:

【参考方案1】:

这样解决:="IDclient_logindata=" & [IDclient]

【讨论】:

我对此表示怀疑,但它确实有效。事实上,如果您使用它的向导来完成整个事情,这就是 Access 本身在这种情况下构建的代码!【参考方案2】:

使用子窗体时,references to controls 需要相对于将子窗体视为子控件的主窗体。

考虑将条件调整为以下结构。请注意这是英文版:

="IDclient_logindata=" & Forms!myMainForm!mySubform.Form!mySubformControl

或专门为您量身定制(确保准确拼写所有对象):

="IDclient_logindata=" & Forms!NavigationForm!clientlist.Form!IDclient

【讨论】:

此类错误的常见原因之一是错误地引用了一个对象。如前所述,使用对象的确切名称(请参阅设计视图中的控件名称)。如果名称中包含空格,请用方括号括起来 [...]。另外,除非您使用的是英文版 Access,否则不要使用 Form\s 限定符。 我把这个:="IDclient_logindata=" & [Maschere]![Navigation Form]![clientlist].[Maschera]![IDclient] 但不起作用..error 另外,如果您使用功能区上的导航表单,这些表单很特殊,实际上可能有一个子表单的内层。你能截图这个导航表单的设计视图吗? 可能很愚蠢的问题:您是否保存了导航表单并为其命名?确定叫[Navigation Form]吗? 导航表单是否放置在另一个表单中(截屏)?如果没有,上述参考应该有效。在 Property Sheet 下检查子窗体及其控件的实际名称。有时数据源名称或标签与实际控件名称不匹配。【参考方案3】:

OP 找到了一个工作解决方案,该解决方案比以下内容简单得多。但是,我仍然有兴趣看看我们是否可以让原始模型上的某些东西起作用,我猜想对于尝试使用 VBA 而不是嵌入式宏来实现相同目标的用户来说,以下内容可能仍然有用。


原始问题中代码的问题是相关表单不是在“顶层”打开,而是作为子表单打开。

表单“普通”子表单,您可以像这样引用子表单上的控件:

Forms!navform!clientlist.form!IDclient

其中navform 是外部形式的名称。或者在一般情况下,像这样:

Forms!Mainform!Subform1.Form!ControlName

但是,“导航表单”向导在将子表单拖到 Layout 视图中的 Add New 选项卡上时,不会很好地命名子表单。所以我不得不这样编码:

Forms![Navigation Form]!NavigationSubform.Form!ControlName

令我惊讶的是,当我在“导航表单”选项卡中添加更多表单并拥有与相关控件命名相同的控件时,这段代码仍然有效。我猜NavigationSubform 会自动指向当前焦点所在的选项卡。

【讨论】:

我进行了更新。你能再试一次吗?还删除了我认为在这种情况下不需要的所有[](除非表单名称中有空格)或称它们为奇怪的东西。 很抱歉。我远离PC,所以无法测试我在说什么。看起来 Parfait 很快就会为您找到解决方案。

以上是关于Microsoft Access Where Condition 在子窗体中不起作用的主要内容,如果未能解决你的问题,请参考以下文章

RODBC 与 ms-access 错误 07002 17 [Microsoft][ODBC Microsoft Access Driver]COUNT 字段不正确

Microsoft Access 表单和 Microsoft Windows 应用程序

[Microsoft][ODBC Microsoft Access Driver] INSERT INTO 语句的语法错误。

Access select where 数据库查询 多表联合查询

将 Microsoft SQL Server 中的文件表链接到 Microsoft Access 2016 中的表

PYODBC ProgrammingError: ('42000', "[42000] [Microsoft][Pilote ODBC Microsoft Access]