文本框控制查询字段

时间:2019-01-21 18:36:04

标签: ms-access access-vba ms-access-2010

我必须处理各种排污口以排放雨水。问题是我不得不使用和维护各种名称。因此,在生成报告时,它们必须使用客户端请求的命名约定。

首先,我创建了一个包含以下字段的表: outfall_ID 名称1 名称2 名称3 名称4 名称5

该表将来可能有更多名称,但目前我最多只能处理5个

然后我创建了一个表单,该表单用作设置表单,允许用户选择name1到name5来标识报告所需的当前名称。

这是我遇到问题的地方。 在查询中,我输入排水口表,然后可以选择ID和Name字段。但我只希望激活与设置表单中的文本字段匹配的名称字段(信息存储在表中以供参考)。

我尝试或查找的所有内容均无效果

1 个答案:

答案 0 :(得分:0)

您无法真正设计一种适用于name1到name5列的表单。

Access是一个数据库,而不是电子表格。因此,在处理数据时,您将处理数据行,而不是数据列。

因此创建一个表,其中包含要选择的名称。

Outfall_ID |名称。

您的表将具有两列,如上所示。然后,您可以构建一个窗体,并驱动基于上表的组合框(或列表框)。这将显示一个列表或组合框,允许您选择名称。

在此表单上的组合框(或列表框)下方,您将具有一个按钮来启动报告。您可以按所选名称过滤报告,如下所示:

DoCmd.OpenReport "rptOutfalls", acViewPreview, , "outfall_ID = " & Me.MyComboBox

上面的代码将根据给定的(选定的)outfall_ID过滤报告。

如果您需要通过在组合框(或列表框)中选择的实际文本名称来过滤报告,我们假定组合框同时显示outfall_id和名称。因此,该名称是组合框的第二个列。

如果要按所选名称过滤报告,则openreprot命令将如下所示:

DoCmd.OpenReport "rptOutfalls", acViewPreview, , "outfallName = '" & Me.MyComboBox.column(1) & "'"

因此,上面的报告现在将仅过滤为您在组合框中选择的名称。

编辑

编辑: SQL无法将列转换为不同的列。您需要对数据进行规范化处理,以便可以使用SQL进行此类更新。

因此,您的表必须如下所示:

mytrans
ID  Myset   SetID   TranslateTo
1   Name1   1   A
2   Name1   2   B
3   Name1   3   C
4   Name2   1   X
5   Name2   2   Y
6   Name2   3   X

您的组合框将因此基于此查询:

select distinct MySet from myTrans

您要根据上面的“翻译” ID的sql将是

Select ID, Field1, Field2, outfall_ID,
 (select TranslateTo from mytrans 
    where mytrans.SetID = outfall_id and myset = 'Name1’) as outfallText
 from theDataTable