Hallo, ich habe 2 Berichte mit unterschiedlichen Ergebnissen.
1. Bericht Spalten: Name, Vorname, Blattl (Zahl)
2. Bericht Spalten: Name, Vorname, Ring (Zahl)
Wie kann ich in einem neuen Bericht alternierend (abwechselnd) in der ersten Zeile Name, Vorname, Blattl, dann in der nächsten Zeile Name, Vorname, Ring, dann wieder Blattl, anschl. wieder Ring usw. erstellen. Jeder Name incl. Vorname darf nur einmal aufgeführt werden.
Ich benutze Access 2013.
Für Eure Hilfe DANKE im voraus!
Hermann
Hallo,
ein gruppierter Bericht könnte da helfen.
Wie sind die Tabellen aufgebaut ?
Hallo,
es gibt eine Tabelle mit Feldern: ID, Name, Vorname, Ring, Blattl, Schützen, Senioren.
Daraus wurden die Abfragen und dann die Berichte erstellt.
Gruß Hermann
Hallo Hermann,
wenn das alles in einer Tabelle steht, brauchst du doch nur die Felder im Detailbereich untereinander zu setzen, anstatt nebeneinander.
Hallo,
das funktioniert leider nicht, da in beiden Berichten die gleichen Namen vorkommen.
Wenn aber der Name schon einmal in einer Wertung erscheint (bestplatzierte Wertung), darf er im Endbericht kein zweites mal erscheinen.
Dann hast du dein Problem wohl noch nicht nachvollziehbar beschrieben. Versuche es doch noch einmal von vorne.
Es gibt eine Tabelle mit: ID, Name, Vorname, Ring, Blattl, Schützen, Senioren.
Über ein Formular werden die Ergebnisse eingetragen.Dann erfolgt eine Abfrage über
a) Name, Vorname, Schützen, Ring
b) Name, Vorname, Schützen, Blattl
Hiervon wird jeweils ein Bericht erstellt.
Ein dritter Bericht soll nun das automatische Ergebnis bringen von
1. Name, Vorname 25 (bestes Blattl)
2. Name, Vorname, 99 ( bestes Ergebnis Ring)
3. Name, Vorname 33 (2. bestes Blattl)
4. Name, Vorname 97 (2. bestes Ergebnis auf Ring)
5. Name, Vorname 47 (3. bestes Blattl)
6. Name, Vorname 96 (3. bestes Ergebnis auf Ring)
usw.
Die Zahlen hinter dem Vornamen sind Beispielszahlen.
Ergebnisse von Blattl sind aufsteigend (1 - 9999, je kleiner desto besser)
Ergebnisse von Ring sind absteigend (100 - 1, je größer desto besser)
Da aber die Schützen in jedem Bericht vorkommen (Blattl, Ring), fällt die schlechtere Platzierung weg. z. B. Wenn der Schütze Platz 4 bei den Ringen erreicht hat, darf er mit einem späteren Platz (z.B. Platz 26) auf Blattl nicht mehr in die Wertung einfließen.
Vielleicht ist es jetzt mehr verständlich.
Gruß Hermann
Hallo Hermann,
ich habe mal ein Beispiel basierend auf deinen Angaben erstellt und hoffe, das hilft dir weiter.
Schau dir die Abfragen an, daraus sollte sich ein Bericht erstellen lassen.
Hallo MaggieMay, :D
deine Abfragen sind super! Wie kann ich jetzt noch erreichen, dass die 2. Wertung der gleichen Person herausfällt. In deiner 2. Abfrage müsste jetzt der 2. "Adam" herausfallen, es zählt nur immer die bessere Platzierung einer Person, jeder darf in der Liste nur einmal aufgeführt sein.
DANKE, mit den besten Grüßen Hermann
Dann würde aber doch das Bestergebnis einer Gruppe unter den Tisch fallen, ich kann mir nicht vorstellen, dass das so gewollt ist.
Hallo MaggieMay,
in diesem Endbericht zählt nur noch das beste Ergebnis der Person. Blatt vor Ring. Jede spätere Platzierung einer Person muß herausfallen, der nächstbeste rückt nach.
Viele Grüße Hermann
Ok, jetzt habe ich verstanden.
Ist keine schöne Lösung wie ich finde, aber es scheint zu funktionieren:
SELECT *
FROM (SELECT nachname, vorname, rang, pos, score,
NZ(DCount("*","abf_kombi_wertung_1","s_id=" & s_id & " And (rang < " & rang & " Or rang = " & rang & " And pos < " & pos & ")"),0)+1 as lfn
FROM abf_kombi_wertung_1) AS h
WHERE h.lfn = 1
Hallo MaggieMay,
das mit den Namen funktioniert, nur habe ich jetzt in der Beispielauswertung einen Wechsel von Blatt und Rang ab der 4. Zeile.
Nochmals vielen Dank für Deine Hilfe!
Viele Grüße Hermann
Hallo MaggieMay,
der Wechsel bezieht sich auf die Streichung des doppelten Namens, es müsste der nächstbeste nachrücken (Neuberechnung nach der Streichung?).
Viele Grüße Hermann
Hallo Hermann,
ich habe einen Weg gefunden, auch wenn er ein bißchen umständlich erscheint, das Ergebnis sollte deinen Vorstellungen entsprechen. Basierend auf der zuvor eingestellten Beispiel-DB sind das im einzelnen folgende Abfragen:
abf_wertung_blatt: (erzeugt Rangfolge der Blattwertung ohne Duplikate)SELECT tbl_wertung.s_id, tbl_wertung.nachname, tbl_wertung.vorname, tbl_wertung.blatt AS score, NZ(DCount("*","tbl_wertung","blatt<" & [tbl_wertung].[blatt]),0)+1 AS rang, 1 AS pos
FROM tbl_wertung
WHERE not exists (select s.s_id from tbl_wertung as s where s.s_id = tbl_wertung.s_id and (s.blatt < tbl_wertung.blatt or s.blatt = tbl_wertung.blatt and s.id < tbl_wertung.id))
ORDER BY 5, 6;
abf_wertung_ring: (erzeugt Rangfolge der Ringwertung ohne Duplikate)SELECT tbl_wertung.s_id, tbl_wertung.nachname, tbl_wertung.vorname, tbl_wertung.ring AS score, NZ(DCount("*","tbl_wertung","ring>" & [tbl_wertung].[ring]),0)+1 AS rang, 2 AS pos
FROM tbl_wertung
WHERE not exists (select s.s_id from tbl_wertung as s where s.s_id = tbl_wertung.s_id and (s.ring > tbl_wertung.ring or s.ring = tbl_wertung.ring and s.id < tbl_wertung.id))
ORDER BY 5, 6;
abf_wertung_kombi: (führt die vorgenannten Abfragen zusammen, unter Ausschluss von Doppelwertungen zu einer Person)SELECT b.s_id, b.nachname, b.vorname, b.score, b.rang, b.pos
FROM abf_wertung_blatt AS b
WHERE NOT EXISTS (SELECT s_id From abf_wertung_ring AS r WHERE r.s_id = b.s_id and r.rang < b.rang)
UNION
SELECT r.s_id, r.nachname, r.vorname, r.score, r.rang, r.pos
FROM abf_wertung_ring AS r
WHERE NOT EXISTS (SELECT s_id From abf_wertung_blatt AS b WHERE b.s_id = r.s_id and b.rang <= r.rang)
ORDER BY 5, 6;
abf_wertung_auswertung: (Endauswertung mit neu berechneter Rangfolge)SELECT s_id, nachname, vorname, score, IIf(pos=1,NZ(DCount("*","abf_wertung_kombi","score<" & score),0)+1,NZ(DCount("*","abf_wertung_kombi","score>" & score),0)+1) AS rang, pos
FROM abf_wertung_kombi
ORDER BY 5,6;
Hallo MaggieMay,
danke für Deine Abfragen, sie funktionieren. Nur wenn ich in die Beispieldatei zusätzliche Namen eingebe, sortiert die letzte Abfrage nicht mehr alles. Was mache ich noch verkehrt?
DANKE Hermann
Hallo Hermann,
ich hatte verschiedene Konstellationen getestet und dachte, damit alles abgedeckt zu haben. Nun liegt es wohl bei dir, mal eine Test-DB hochzuladen, um die Schwachstellen vorzuführen.
Hallo MaggieMay, :-[
die vierte Abfrage lässt sich nicht ausführen. Da ich Neuling bin, weiß ich nicht wo mein Fehler liegt.
DANKE für deine Hilfe.
Viele Grüße Hermann
Hallo,
bei der letzten Abfrage habe ich etwas entscheidendes vergessen:SELECT s_id, nachname, vorname, score, IIf(pos=1,
NZ(DCount("*","abf_wertung_kombi","[color=blue]pos=1 and [/color]score<" & score),0)+1,
NZ(DCount("*","abf_wertung_kombi","[color=blue]pos=2 and [/color]score>" & score),0)+1) AS rang, pos
FROM abf_wertung_kombi
ORDER BY 5,6;
Zur Beschleunigung der Auswertung könnte man aus abf_wertung_kombi eine Tabellenerstellungsabfrage machen und die vierte Abfrage darauf aufsetzen.
Hallo MaggieMay, ;D ;D ;D
DANKE für Deine Hilfe!!!
Es funktioniert alles super - Problem gelöst
Viele Grüße Hermann