MS Access Query-By-Form 问题

Posted

技术标签:

【中文标题】MS Access Query-By-Form 问题【英文标题】:MS Access Query-By-Form Issue 【发布时间】:2013-08-09 16:21:53 【问题描述】:

我有一个包含两个组合框的表单 (fCen1-20)。第一个组合框称为 Lookup Value,下拉菜单包含 Lookup_Value 字段,该字段用作数据库中每个表的主键。第二个组合框称为类别,下拉列表包含类别、代码和表格字段。

我希望用户选择查找值和类别,并让这些选择通知一个查询,该查询返回所选查找值的所选类别的值。复杂的因素是每个查找值都与 1500 多个独特的信息类别相关联,每个类别都分配有一个唯一的代码 - 该代码用作字段名称。

为了您的参考,我在下面粘贴了我的代码以及我的基本原理:

SELECT [Forms]![fCen1-20]![Category 1].Code 
' Rationale: Get the value for the Code associated with a given category

FROM [Forms]![fCen1-20]![Category 1].Table 
' Rationale: Reference the Table where the selected Category/Code is housed

ON [Forms]![fCen1-20]![Category 1].Table.Lookup_Value = _ 
        [Forms]![fCen1-20].[Lookup Value]; 
' Rationale: Select only those records in the table 
' for which the Lookup_Value field matches the Lookup Value  
' selected in the form

当我运行此代码时,我收到“FROM 子句中的语法错误”错误。关于如何使这项工作的任何建议?如果您需要任何其他详细信息或说明,请告诉我。谢谢!

【问题讨论】:

【参考方案1】:

如果您在查询中使用它,假设表单 fCen1-20 在表单视图中打开,它可能会起作用。

SELECT [Forms]![fCen1-20]![Category 1]

返回的值将来自当前选择的组合框行的绑定列。 [Category 1] 包含 3 列这一事实并不重要。 db 引擎只看到“绑定”的列。 (在组合属性表的数据选项卡上检查组合的绑定列属性。)绑定值是查询中唯一可用的组合值。

您不能将列名称附加到组合名称以从这些列中检索值,因此这些都将失败:

[Forms]![fCen1-20]![Category 1].Code
[Forms]![fCen1-20]![Category 1].Table

这就是我为什么认为您的方法行不通的解释。但是,我不知道该建议什么。通常,如果您使用表的主键作为组合的绑定值,则可以在查询中将该绑定值与 DLookup 表达式一起使用。例如,假设所有值都是数字...

SELECT fld1, fld2, etc
FROM YourTable
WHERE some_field = DLookup(
    "lookup_field",
    "AnotherTable",
    "pkey_field = " & [Forms]![fCen1-20]![Category 1]
    );

很遗憾,我不知道该建议是否对您的情况有用,因为我不清楚您要完成什么。

【讨论】:

以上是关于MS Access Query-By-Form 问题的主要内容,如果未能解决你的问题,请参考以下文章

在压缩/修复期间防止自动编号重置 (MS Access)

为啥我在从 MS Access 数据库中提取的十进制值中添加了零?

MS Access 的新管理员,如何修改现有宏

将 MS Access Web 应用程序转换为 SQL Server Web 应用程序

从 MS Access 发送电子邮件 不允许第三方 dll

如何检索 MS-Access 中的最后一个自动增量值,例如 Sql Server 中的 @@Identity