Access - 如何将满足条件的字段名称显示为报表中的列表

Posted

技术标签:

【中文标题】Access - 如何将满足条件的字段名称显示为报表中的列表【英文标题】:Access - How to display field names that meet a condition as a list in a report 【发布时间】:2017-08-30 02:39:54 【问题描述】:

我目前正在开展一个项目,该项目旨在识别岛上 50 个地点的入侵植物物种。任何地点都可能出现 500 多种物种,其中许多地点拥有 100 多种或更多相同的物种。我需要列出每个站点上出现的所有物种,我认为为每个站点设置一个单独的表格会非常低效,因为大多数站点都有许多相同的物种。因此,我创建了一个表,其中包含为第一列中的所有站点识别的所有物种,所有站点作为列名,以及带有二进制数据的表主体; “Y”或“N”表示是否在相应地点确定了物种。示例:

 Scientific Name         Old Wives Beach    Dadi      Orote N Airstrip
 Abelmoschus moschatus   N                  N         N
 Abrus precatorius       Y                  N         Y
 Abutilon indicum        N                  N         N

我想不出在 Access 的报表中显示这些数据的有效方法。问题在于,此表中有意义的数据实际上位于列名中,而不是 Access 从中提取以创建报表的表的一部分。有没有办法在 Access 的报告中列出每个记录(站点)的列名(物种),其中有一个“Y”?

【问题讨论】:

【参考方案1】:

您需要标准化您的数据。如您所见,将站点存储为列将是有问题的。 为物种创建表格:

Id
ScientificName
other data

网站的其他表格:

Id
Name

还有与上述表格相关的第三个表格:SpeciesInSites

SpecieId
SiteId
AnyOtherUsefulData

使用此数据结构,您将能够获得报告、摘要等。此外,如果您需要将网站报告为列,您可以使用pivot query 或pivot table。

【讨论】:

【参考方案2】:

可能有更优雅的解决方案,但这是我会尝试的。这仅在您尝试为单个站点运行报告时才有效。如果您想要一份 50 页的报告,其中每个站点都位于单独的页面上,这将不起作用。

创建一个表单,其中包含站点作为用户选择的下拉列表和用于打开报告的启动按钮。然后使用此算法启动报告:

sub ReportMakerclick()

站点名称 = 组合框值

sql = "SELECT FirstColumn From YourTable WHERE " & sitename & " = ""Y"" "

将报表的记录源更新为sql

启动报告

结束子

【讨论】:

以上是关于Access - 如何将满足条件的字段名称显示为报表中的列表的主要内容,如果未能解决你的问题,请参考以下文章

access 查询条件 能否用自定义的函数

Access 2010 应用基础 单元三:SQL查询

access查询设计运行不出来

求助idea 数据库字段被隐藏,求如何显示

MS Access:如何过滤非报告字段的报告?

ACCESS中如何让表关联