Access-o-Mania

Access-Forum (Deutsch/German) => Tabelle/Abfrage => Thema gestartet von: Martinus am März 17, 2025, 18:51:17

Titel: Abfrage mit Funktion Schalter und 2 Bedingungen
Beitrag von: Martinus am März 17, 2025, 18:51:17
Ich habe folgende Abfrage die so auch funktioniert wie gewünscht:

class: Schalter([Jahrgang] Zwischen 2021 Und 2023;"class1";
[Jahrgang] Zwischen 2019 Und 2020;"class2";
[Jahrgang] Zwischen 2016 Und 2018;"class3";
[Jahrgang] Zwischen 2013 Und 2015;"class4";
[Jahrgang] Zwischen 2010 Und 2012;"class5";
[Jahrgang] Zwischen 1981 Und 1995;"class6";
[Jahrgang] Zwischen 1920 Und 1980;"class7")

Wie kann man da ein zweites Kriterium einbauen ?

Im Feld [Gender] steht der Wert "M" oder "F"
Nach diesem Wert soll bei [Jahrgang] zwischen 1920 und 2009 zusätzlich unterschieden werden.

Bei [Gender]="M" + [Jahrgang] Zwischen 1920 Und 2009;"class8men"
Bei [Gender]="F" + [Jahrgang] Zwischen 1920 Und 2009;"class8women"

Wie kann das in den Befehl eingebaut werden ? Der Syntax dazu ist mir noch nicht klar.
Titel: Re: Abfrage mit Funktion Schalter und 2 Bedingungen
Beitrag von: markusxy am März 17, 2025, 19:11:37
Einfach mit einem und statt mit einem + verbinden, so wie du es bereits bei Zwischen machst  :)


Edit: Wobei ich mir nicht sicher bin ob die Anzahl der Ausdrücke begrenzt ist. Aber das merkst du dann ganz schnell.
Titel: Re: Abfrage mit Funktion Schalter und 2 Bedingungen
Beitrag von: Martinus am März 17, 2025, 19:24:38
Muchas gracias ! Das war ja fast zu einfach ;-)
Da hab ich wohl zu kompliziert gedacht...

class: Schalter([Jahrgang] Zwischen 2021 Und 2023;"class1";
[Jahrgang] Zwischen 2019 Und 2020;"class2";
[Jahrgang] Zwischen 2016 Und 2018;"class3";
[Jahrgang] Zwischen 2013 Und 2015;"class4";
[Jahrgang] Zwischen 2010 Und 2012;"class5";
[Jahrgang] Zwischen 1981 Und 1995;"class6";
[Jahrgang] Zwischen 1920 Und 1980;"class7";
[GENDER]="F" Und [Jahrgang] Zwischen 1920 Und 2009;"class8women";
[GENDER]="M" Und [Jahrgang] Zwischen 1920 Und 2009;"class8men")
Titel: Re: Abfrage mit Funktion Schalter und 2 Bedingungen
Beitrag von: MzKlMu am März 17, 2025, 19:36:39
Hallo,
Schalter ist begrenzt auf 7-9 Bedingungen, da dürfte also schon fast die Grenze erreicht sein.
Ich würde hier immer eine Tabelle anlegen, aus der an mit DLookup den entsprechenden Wert ermittelt.

Ich würde hier sogar die Normalisierungsregeln außer acht lassen und eine Tabelle für jedes Jahr anlegen.

Jahrgang  class
1920     class7
1921     class7
.
.
1980     class7
1981     class6
.
.
usw.
Und dann noch eine Tabelle für Gender mit einer Spalte für den Buchstaben und einer Spalte für die Ergänzung (women/men).
Dann kann man in einer Abfrage die Anzeige einfach zusammensetzen. Da braucht es keine Funktion.

Was machst Du für 2025 ?
Die Funktion ändern ? Das ist doch nicht wirklich praktikabel, zumal ja Schalter begrenzt ist.
Titel: Re: Abfrage mit Funktion Schalter und 2 Bedingungen
Beitrag von: Martinus am März 17, 2025, 20:36:16
Danke für Deinen Ansatz, Klaus !

Aktuell habe ich bei den Stammdaten der Fahrer das Feld class25 (für 2025) das in der Abfrage die Funktion Schalter hinterlegt hat. Das ist in meinem ersten Beitrag noch class.

Ich hatte bisher mehrere Überlegungen dazu.
Es geht hier um einen Datenbank für Rennveranstaltungen mit mehreren Rennen pro Jahr.
Die Einteilung der Klassen geschieht über die Jahrgänge (von bis) und in einer "PRO" Klasse zusätzlich um die Aufteilung M/F
Sicherlich ändern sich die Jahrgangseinteilungen jährlich.
Aktuell habe ich es so geplant, dass es in der Stammdatentabelle ein Feld mit der Klasse für das jeweilige Jahr gibt. In der Abfrage wird über die Funktion Schalter die Klasse zugeordnet, im Stammdaten Erfassungsformular sind die Werte sichtbar.

Für die nächsten Jahre habe ich auch schon überlegt das etwas flexibler und anpassbar zu machen. Eine Art Konfigurationsoberfläche mit der die Parameter für ein weiteres Jahr festgelegt und die weiteren Tabellen + Abfragen erstellt werden können.
Änderung des Rennmodus und der Jahrgangsklassen z.B.

Ich habe noch keine weitreichenden Access Erfahrungen und lerne gerade täglich dazu. Ich bin überrascht wieviel man mit Berechnungen in Abfragen erledigen kann.
Titel: Re: Abfrage mit Funktion Schalter und 2 Bedingungen
Beitrag von: Knobbi38 am März 17, 2025, 22:31:32
Hallo Martinus,
Zitat von: Martinus am März 17, 2025, 20:36:16Eine Art Konfigurationsoberfläche mit der die Parameter für ein weiteres Jahr festgelegt und die weiteren Tabellen + Abfragen erstellt werden können.
So etwas solltest du gleich wieder vergessen. Das Datenmodell wird einmal erstellt und dann später eventuell mal ergänzt, aber Tabellen für jedes Jahr usw. ist ein nogo und Abfragen sollten auch nicht jedes Jahr geändert werden müssen. Deshalb ist das mit den Schaltern auch keine gute Idee. Eine Lösung für ein relationales Datenmodell hat dir ja Klaus aufgezeigt.

Btw. die höchsten Klassennummern für die ältesten Jahrgänge fühlt ich irgendwie falsch an. Eigentlich sollte die Bezeichnungen genau anderes herum sein, dann könnte man das auch fortschreiben.

Gruß
Knobbi38

Titel: Re: Abfrage mit Funktion Schalter und 2 Bedingungen
Beitrag von: Martinus am März 18, 2025, 21:02:41
Nochmals vielen Dank für eure Überlegungen hinsichtlich einmal erstelltes Datenmodell.
Mir fehlt momentan noch die Vorstellungskraft wie das mit euren Überlegungen umzusetzen wäre.

@knobbi38: Das mit den Klassennummern ist nur ein Beispiel. Tatsächlich wird es Bezeichnungen wie Kids, Jugend, Master geben.

Hier nochmal ein paar ergänzende Info´s worum es geht.

Pro Jahr gibt es mehrere Rennen. In jedem Rennen gibt es mehrere Altersklassen. In jeder Altersklasse fährt jeder Starter einzeln eine Strecke. Pro Starter gibt es jeweils 3 Durchgänge. Die schnellste Zeit aus den 3 Durchgängen wird gewertet und so in allen Klassen der schnellste ermittelt.
Die 10 schnellsten pro Klasse bekommen Punkte für die Gesamtserienwertung.

Jeder Teilnehmer der sich anmeldet bekommt automatisch eine ID (so etwas wie eine Kundennr.) zugewiesen.

Am Renntag werden die Startnummern vergeben. (Für jedes Rennen gibt es neue Startnummern) Wer an mehreren Rennen teilnimmt, wird über seine ID identifiziert. Über diese ID erfolgt auch die Verknüpfung zu den einzelnen Rennen und den Auswertungen (Tagessieger + Gesamtsieger)

Tabellen:
Stammdaten: Grunddatenbank der Teilnehmer
Race25_1_class1: Hierin werden die Rennzeiten erfasst (Startnummer, Zeit1, Zeit2, Zeit3, schnellste Zeit  pro Teilnehmer, Ranking mit den schnellsten der Klasse)
Race25_1_class2: s.o.
usw
Race25_2_class1: s.o.


Die Auswertung erfolgt über Berichte aus den erfassten Daten.

Da es im darauffolgenden Jahr sein kann das sich der Rennmodus, ganz bestimmt aber die Jahrgangsklassen ändern, würde ich darauf gerne flexibel reagieren können. Deshalb auch der Aufbau mit unterschiedlichen Tabellen pro Rennen. Die Zuordnung der Klassen zu Jahrgängen über ein Feld empfand ich bisher als Erleichterung. 
Die Felder Jahrgang, TeilnehmerID, Alter, Klasseneinteilung pro Jahr werden berechnet und sind im Formular gesperrt und nicht aktiv. Basis für die Berechnung ist das Geburtsdatum (Jahrgang, Alter, Klasse)

Bisher gab es pro Jahr 3 Rennen und alles wurde per excel aufwendig und teilweise automatisiert umgesetzt.

Um den Aufwand zu minimieren und die Verwaltbarkeit zu verbessern möchte ich das mit einer Datenbank machen. Die wichtigste Tabelle ist die mit den Stammdaten der Fahrer.

Mit meinem bisherigen Wissensstand würde ich die Vorteile des relationalen Datenmodells nutzen wollen, für die einzelnen Rennen aber auf getrennte Tabellen mit Einträgen wie gefahrene Zeiten und die Auswertung setzen. Natürlich gibt es da Beziehungen zu den Fahrerstammdaten.
Da sich einige Bedingungen jährlich ändern können, kommt mir das so am einfachsten verwaltbar vor.

Wenn ihr Anregungen zu weiterführender Lektüre habt, bin ich dankbar für Hinweise.
Titel: Re: Abfrage mit Funktion Schalter und 2 Bedingungen
Beitrag von: Knobbi38 am März 19, 2025, 10:32:19
Hallo Martinus,

ZitatDeshalb auch der Aufbau mit unterschiedlichen Tabellen pro Rennen.

Was du da ansprichst ist ein Ansatz, wie er öfter in Excel zu finden ist und hat mit einer Datenbank wenig zu tun.  Wenn du so vorgehst, wirst du früher oder später auf Probleme stoßen, die nicht mehr trivial zu lösen sind, weil das Datenmodell so eben nicht i.O. ist. Die Regeln bezügl. Datenmodellierung gelten für Excel übrigens gleichermaßen.

Im Internet gibt es genügt Artikel, wie man ein relationales Datenmodell entwirft. Teil eines Entwurfs ist auch das normalisieren von Tabellen und das wäre möglicherweise der richtige Einstieg für dich. Die viel zitierten YouTube-Videos sind für den Einstieg in die Materie weniger geeignet, weil sie oft nur Detailprobleme beleuchten und nicht das Ganze im Blick haben, schau dich besser nach Tutorials, Artikeln oder Fachbüchern um, welche das Thema didaktisch angehen.

Vielleicht ist das ja etwas für dich:
http://www.buch.andreasstern.de/index.php

Gruß Knobbi38