Access-o-Mania

Access-Forum (Deutsch/German) => Access Programmierung => Thema gestartet von: hermann169 am Oktober 28, 2014, 18:54:06

Titel: alternierende Ergebnisanzeige aus zwei Berichten
Beitrag von: hermann169 am Oktober 28, 2014, 18:54:06
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
Titel: Re: alternierende Ergebnisanzeige aus zwei Berichten
Beitrag von: MzKlMu am Oktober 28, 2014, 19:09:16
Hallo,
ein gruppierter Bericht könnte da helfen.
Wie sind die Tabellen aufgebaut ?
Titel: Re: alternierende Ergebnisanzeige aus zwei Berichten
Beitrag von: hermann169 am Oktober 28, 2014, 19:47:55
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
Titel: Re: alternierende Ergebnisanzeige aus zwei Berichten
Beitrag von: MaggieMay am Oktober 28, 2014, 19:51:59
Hallo Hermann,

wenn das alles in einer Tabelle steht, brauchst du doch nur die Felder im Detailbereich untereinander zu setzen, anstatt nebeneinander.
Titel: Re: alternierende Ergebnisanzeige aus zwei Berichten
Beitrag von: hermann169 am Oktober 28, 2014, 20:37:48
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.
Titel: Re: alternierende Ergebnisanzeige aus zwei Berichten
Beitrag von: MaggieMay am Oktober 28, 2014, 20:48:06
Dann hast du dein Problem wohl noch nicht nachvollziehbar beschrieben. Versuche es doch noch einmal von vorne.
Titel: Re: alternierende Ergebnisanzeige aus zwei Berichten
Beitrag von: hermann169 am Oktober 28, 2014, 22:20:59
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
Titel: Re: alternierende Ergebnisanzeige aus zwei Berichten
Beitrag von: MaggieMay am Oktober 29, 2014, 23:22:01
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.

Titel: Re: alternierende Ergebnisanzeige aus zwei Berichten
Beitrag von: hermann169 am Oktober 30, 2014, 11:41:56
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
Titel: Re: alternierende Ergebnisanzeige aus zwei Berichten
Beitrag von: MaggieMay am Oktober 30, 2014, 11:46:53
Dann würde aber doch das Bestergebnis einer Gruppe unter den Tisch fallen, ich kann mir nicht vorstellen, dass das so gewollt ist.
Titel: Re: alternierende Ergebnisanzeige aus zwei Berichten
Beitrag von: hermann169 am Oktober 30, 2014, 13:42:40
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
Titel: Re: alternierende Ergebnisanzeige aus zwei Berichten
Beitrag von: MaggieMay am Oktober 30, 2014, 14:40:22
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
Titel: Re: alternierende Ergebnisanzeige aus zwei Berichten
Beitrag von: hermann169 am Oktober 30, 2014, 16:53:00
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
Titel: Re: alternierende Ergebnisanzeige aus zwei Berichten
Beitrag von: hermann169 am Oktober 30, 2014, 16:59:54
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
Titel: Re: alternierende Ergebnisanzeige aus zwei Berichten
Beitrag von: MaggieMay am Oktober 31, 2014, 11:42:07
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;

Titel: Re: alternierende Ergebnisanzeige aus zwei Berichten
Beitrag von: hermann169 am Oktober 31, 2014, 16:59:21
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
Titel: Re: alternierende Ergebnisanzeige aus zwei Berichten
Beitrag von: MaggieMay am November 01, 2014, 01:19:48
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.
Titel: Re: alternierende Ergebnisanzeige aus zwei Berichten
Beitrag von: hermann169 am November 01, 2014, 12:21:15
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
Titel: Re: alternierende Ergebnisanzeige aus zwei Berichten
Beitrag von: MaggieMay am November 03, 2014, 14:30:55
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.
Titel: Re: alternierende Ergebnisanzeige aus zwei Berichten
Beitrag von: hermann169 am November 04, 2014, 11:19:07
Hallo MaggieMay, ;D ;D ;D

                                                   DANKE für Deine Hilfe!!!

Es funktioniert alles super - Problem gelöst
Viele Grüße Hermann