Select-Abfrage in Access-Bericht

antifa2004

Ensign
Dabei seit
Juni 2004
Beiträge
128
Hallo ihr,

ich folgendes Problem: Ich habe eine Access-Datenbank mit zig Tabellen und Berichten. Ein Bericht liefert alle Personendaten. Zusätzlich muss dort in einer Tabelle eine select-Abfrage ausgeführt werden, weil die Daten aus einer anderen Tabelle stammen und noch gefiltert werden müssen.
Ich habe das jetzt mit einem Listenfeld realisiert und als Datensatzherkunft die select-Abfrage hinzugefügt. Das funktioniert prima für die erste Seite des Berichts. Doch bei allen Weiteren Seiten (also allen weiteren Personen) stehen jeweils die Daten der ersten drin.

Wie bekomme ich es hin, dass die select für jede Seite neu ausgeführt wird?

Wäre toll, wenn ihr mir helfen könnt!

Danke und LG :)
 

tm0975

Captain
Dabei seit
Juli 2010
Beiträge
3.211
klingt nach einer falschen (bzw. fehlenden) verknüpfung deiner tabellen, stichwort ist join.
 

antifa2004

Ensign
Ersteller dieses Themas
Dabei seit
Juni 2004
Beiträge
128
Nee, nee, die sind richtig mit 1:n verknüpft.

Problem scheint folgendes zu sein:
Im Bericht gibt es ein Feld "PersID". In der Selectabfrage beziehe ich mich auf dieses Feld (...where LaufbahnID = PersID ...). Nun scheint Access aber auch für die nächsten Seiten die ID der ersten Seite zu nehmen.

Wie kann ich das verhindern oder umgehen?
Ich will, dass die Select auf nur diese Seite/Person abzielt.
 

tm0975

Captain
Dabei seit
Juli 2010
Beiträge
3.211
trenne mal bitte die darstellungsfunktionalität access (davon hab ich keine ahnung xD) von der datenbanklogik. welche struktur haben die involvierten tabellen? wie sieht deine abfrage aus?
 

antifa2004

Ensign
Ersteller dieses Themas
Dabei seit
Juni 2004
Beiträge
128
Ich glaube nicht, dass es an den Tabellen liegt.

Tabelle 1 "Personen":
ID
Name
Vorname
...

ID ist PK.

Tabelle 2 "Laufbahnen"
ID
Merkmal 1
Merkmal 2
...
PersID

PersID ist FK.

Ich kann das aber nicht trennen, da ich mich auf Seite 1 im Bericht auch auf Datensatz 1 beziehen muss. Also ich wüßte nicht, wie ich das Trennen soll.

Edit: Personen.ID ist mit Laufbahnen.PersID über 1:n mit referentieller I. verknüpft.
 

tm0975

Captain
Dabei seit
Juli 2010
Beiträge
3.211
und deine select-anweisung?
 

antifa2004

Ensign
Ersteller dieses Themas
Dabei seit
Juni 2004
Beiträge
128
SELECT * FROM Laufbahnen INNER JOIN Personen ON Laufbahnen.PersID=Personen.ID WHERE Laufbahnen.PersID = PersoID AND Merkmal1 = Sommer;

PersoID ist hierbei das Feld im Bericht, welches die Personen.ID beinhaltet.
 

tm0975

Captain
Dabei seit
Juli 2010
Beiträge
3.211
das erzeugt eine liste, in der u.u. personen mehrfach drin sein können. ist denn das ergebnis deiner abfrage das, was du erwartest?
 

antifa2004

Ensign
Ersteller dieses Themas
Dabei seit
Juni 2004
Beiträge
128
Ja, solange ich die Abfrage einzeln pro Person ausführe stimmt sie. Sobald ich aber den gesamtbericht mit rund 500 Datensätzen aufrufe, stimmt nur Seite 1. Seite 2 bis Ende beinhaltet dann die Daten von Seite 1.

Und das ist doof! :-(
 
Top