2017-08-30 1 views
0

ich derzeit an einem Projekt arbeite, die für 50 Websites auf einer Insel invasive Pflanzenart identifiziert. Es gibt über 500 Arten, die an jedem Standort vorkommen können, und viele der Standorte beherbergen 100 oder mehr der gleichen Arten. Ich muss alle Arten auflisten, die an jedem Standort vorkommen, und ich denke, es wäre sehr ineffizient, einen separaten Tisch für jeden Standort zu haben, da die meisten Standorte viele der gleichen Arten haben. Also habe ich eine Tabelle erstellt, in der alle Arten für alle Standorte in der ersten Spalte, alle Standorte als Spaltennamen und der Hauptteil der Tabelle mit Binärdaten angegeben sind. ein "Y" oder "N", das anzeigt, ob eine Art an der jeweiligen Stelle identifiziert wurde. Beispiel:Zugang - Wie Feldnamen angezeigt werden, die eine Bedingung als Liste in einem Bericht treffen

Was ich nicht herausfinden kann, ist eine effiziente Möglichkeit, diese Daten in einem Bericht in Access anzuzeigen. Das Problem besteht darin, dass die sinnvollen Daten in dieser Tabelle tatsächlich in den Spaltennamen und nicht in einem Teil der Tabelle enthalten sind, aus der Access einen Bericht erstellt. Gibt es eine Möglichkeit, in einem Bericht in Access die Spaltennamen (Species) für jeden Datensatz (Site) aufzulisten, für den es ein "Y" gibt?

Antwort

1

Sie benötigen Daten zu normalisieren. Das Speichern von Websites als Spalten ist, wie Sie gesehen haben, problematisch. eine Tabelle für Arten erstellen:

Id 
ScientificName 
other data 

Andere Tabelle für Websites:

Id 
Name 

Und eine 3. Tabelle oben stehenden Tabellen beziehen: SpeciesInSites

SpecieId 
SiteId 
AnyOtherUsefulData 

Mit Diese Datenstruktur werden Sie b Sie können Berichte, Zusammenfassungen usw. erhalten. Wenn Sie die Websites als Spalten angeben müssen, können Sie auch pivot query oder pivot table verwenden.

0

Es mag eine elegantere Lösung geben, aber hier ist, was ich versuchen würde. Dies funktioniert nur, wenn Sie versuchen, einen Bericht für eine einzelne Site auszuführen. Wenn Sie einen 50-seitigen Bericht erstellen möchten, der jede Site auf einer separaten Seite enthält, funktioniert dies nicht.

Erstellen Sie ein Formular mit den Websites als Dropdownliste, die der Benutzer auswählt, und eine Startschaltfläche, um den Bericht zu öffnen. Dann diesen Algorithmus verwenden, um den Bericht zu starten:

Unter ReportMakerclick()

Site-Name = combobox.value

sql = "SELECT Firstcolumn Von Yourtable WHERE" & Site-Name & "= "" Y"“"

Aktualisieren Sie die Datenherkunft des Berichts sQL

Einführung zu dem Bericht

Ende Unter

Verwandte Themen