访问 - 如何在报告

时间:2017-08-30 02:39:55

标签: ms-access report

我目前正在开展一个项目,确定岛上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”?

2 个答案:

答案 0 :(得分:1)

您需要规范化数据。正如您所见,将网站存储为列将会出现问题。 为物种创建一个表格:

Id
ScientificName
other data

其他网站表:

Id
Name

与上表相关的第3个表:SpeciesInSites

SpecieId
SiteId
AnyOtherUsefulData

使用此数据结构,您将能够获取报告,摘要等。此外,如果您需要将网站报告为列,则可以使用pivot querypivot table。< / p>

答案 1 :(得分:0)

可能有一个更优雅的解决方案,但这就是我想要的。这仅适用于您尝试为单个站点运行报告的情况。如果您想要一个50页的报告,每个网站都在一个单独的页面上,这将无法正常工作。

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

sub ReportMakerclick()

sitename = combobox.value

sql =&#34;从YourTable WHERE&#34;选择FirstColumn &安培; sitename&amp; &#34; =&#34;&#34; Y&#34;&#34; &#34;

将Report的记录源更新为sql

启动报告

结束子