我必须管理各种排水口,以便排出雨水。问题是有各种各样的名字需要我使用和维护。因此,在生成报告时,它们必须使用客户端请求的命名约定。
首先,我创建了一个包含以下字段的表: outfall_ID name1 name2 name3 name4 name5
这个表将来可能会有更多的名称,但目前我处理的最大名称是5个
然后,我创建了一个表单,该表单充当设置表单,允许用户通过name5选择name1,以标识报告所需的当前名称。
这是我遇到问题的地方。在查询中,我引入了outfall表,并且可以选择ID和Name字段。但我只希望激活与设置表单中的文本字段匹配的名称字段(信息存储在表中以供引用)。
我试过或查过的东西都不管用
发布于 2019-01-22 03:11:16
你不能真的设计一个可以处理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 theDataTablehttps://stackoverflow.com/questions/54295967
复制相似问题