我必须处理各种排污口以排放雨水。问题是我不得不使用和维护各种名称。因此,在生成报告时,它们必须使用客户端请求的命名约定。
首先,我创建了一个包含以下字段的表: outfall_ID 名称1 名称2 名称3 名称4 名称5
该表将来可能有更多名称,但目前我最多只能处理5个
然后我创建了一个表单,该表单用作设置表单,允许用户选择name1到name5来标识报告所需的当前名称。
这是我遇到问题的地方。 在查询中,我输入排水口表,然后可以选择ID和Name字段。但我只希望激活与设置表单中的文本字段匹配的名称字段(信息存储在表中以供参考)。
我尝试或查找的所有内容均无效果
答案 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