Ms access Access—如何在报告中将满足条件的字段名显示为列表

Ms access Access—如何在报告中将满足条件的字段名显示为列表,ms-access,report,Ms Access,Report,我目前正在做一个项目,为一个岛屿上的50个地点确定入侵植物物种。有500多种物种可能出现在任何地点,许多地点拥有100种或更多相同物种。我需要列出每个地点出现的所有物种,我认为为每个地点单独列出一个表是非常低效的,因为大多数地点都有许多相同的物种。因此,我创建了一个表,其中包含第一列中所有站点的所有物种标识,所有站点作为列名,以及带有二进制数据的表体;“Y”或“N”表示是否在各自的地点识别出物种。例如: Scientific Name Old Wives Beach Da

我目前正在做一个项目,为一个岛屿上的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”?

您需要规范化数据。正如您所看到的,将站点存储为列会有问题。 创建物种表:

Id
ScientificName
other data
Id
Name
站点的其他表格:

Id
ScientificName
other data
Id
Name
以及与上述表格相关的第三个表格:SpeciesInSites

SpecieId
SiteId
AnyOtherUsefulData

使用此数据结构,您将能够获得报告、摘要等。此外,如果您需要以列的形式报告站点,您可以使用or。

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

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

子报表MakerClick()

sitename=combobox.value

sql=“从表中选择第一列,其中”&sitename&=“Y”

将报告的recordsource更新为sql

发布报告

端接头