MS Access Query-By-Form问题

时间:2013-08-09 16:21:54

标签: sql forms ms-access

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

我希望用户选择查找值和类别,并为这些选择通知查询,该查询返回所选查找值的所选类别的值。复杂因素是每个查找值与超过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 个答案:

答案 0 :(得分: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]
    );

不幸的是,我不知道这个建议是否对你的情况有用,因为我不清楚你想要完成什么。