Neuigkeiten:

Wenn ihr euch für eine gute Antwort bedanken möchtet, im entsprechenden Posting einfach den Knopf "sag Danke" drücken!

Mobiles Hauptmenü

Formular für Turnierverwaltung

Begonnen von dille999, Januar 19, 2017, 18:06:43

⏪ vorheriges - nächstes ⏩

Beaker s.a.

Korrektur:
ZitatO.K., wichtig dabei eben, dass die Relationen zwischen den Schlüsselfeldern eingerichtet werden.
Alles, was geschieht, geschieht. - Alles, was während seines Geschehens etwas anderes geschehen lässt, lässt etwas anderes geschehen. - Alles, was sich selbst im Zuge seines Geschehens erneut geschehen lässt, geschieht erneut. - Allerdings tut es das nicht unbedingt in chronologischer Reihenfolge.
(Douglas Adams, Mostly Harmless)

dille999

#31
Au Mann, ganz vielen Dank. Habe nun die Fehler gefunden. Die Datensetzherkunft unter "Formular" war tatsächlich nicht gesetzt. Ich dachte, wenn ich die Tabelle Spieler-Turnier offen habe und auf Formular drücke, dass Access das automatisch übernimmt. Dann stand bei mir unter "Datensätze sperren" noch keine Sperrungen, bei Dir "bearbeiteter Datensatz". Und zum Schluss noch unter Format "Endlosformat" einstellen, das stand bei mir auf "Datenblatt". Nun habe ich auch das uFo so hinbekommen wie Du. Muss mir das noch mal ein bisschen anschauen aber auf die Schnelle:

Neues Formular mit Datensatzherkunft Spieler-Turnier-> Formular zeigt die Datensätze aus Spieler-Turnier an.
Endlosformular einstellen-> Formular zeigt alle Datensätze aus Spieler-Turnier an.
Die Anzeigefelder löschen und ein Kombifeld erstellen.-> Das wollen wir ja haben.
Kombi-Assi1: Dieses soll die Werte einer Tabelle übernehmen.
Kombi-Assi2: Ich wähle Tabelle Spieler, denn es sollen ja die Namen und nicht die Relationen angezeigt werden.
Kombi-Assi3: Als Anzeige wähle ich Vornamen aus.
Kombi-Assi4: Die Sortierung erfolgt nach Vornamen.
Kombi-Assi5: Der Wert der gespeichert werden soll ist die SpielerID, denn wir wollen in die Tabelle Spieler-Turnier reinschreiben.
Kombi-Assi6: Der Wert wird direkt gespeichert in: SpielerID_F

Falls da Denkfehler drin sind, bitte berichtigen. Aber so wie beschrieben, meine ich das zu verstehen.

Abgesehen davon, brauche ich glaube ich erst mal ein bisschen um mir die Version 3edc reinzuziehen. Die ist schon ziemlich geil und ausgebufft.

Ganz vielen Dank dafür.

Beaker s.a.

Hallo Dirk,
ZitatFalls da Denkfehler drin sind, bitte berichtigen. Aber so wie beschrieben, meine ich das zu verstehen.
Alles richtig (wenn ich nichts übersehen habe).
gruss ekkehard
Alles, was geschieht, geschieht. - Alles, was während seines Geschehens etwas anderes geschehen lässt, lässt etwas anderes geschehen. - Alles, was sich selbst im Zuge seines Geschehens erneut geschehen lässt, geschieht erneut. - Allerdings tut es das nicht unbedingt in chronologischer Reihenfolge.
(Douglas Adams, Mostly Harmless)

dille999

Hallo,

alle Jahre wieder...

nach 3 Monaten wieder alles auf null (nicht ganz).
Nach langer Zeit fielen mir dann noch Dinge auf, die gut wären, wenn diese geändert werden würden. Um wieder mal etwas reinzukommen und weil die Datenbank vertrauliche personale Daten enthielt, habe ich das ganze nochmals neu aufgesetzt. Damit ihr ungefähr einen Eindruck über meine Accesskompetenzen besitzt: Das erstellen der Tabellen und Beziehungen keine 10 Minuten. Die ganzen Funktionen und Anpassungen im Quelltext (ich habe neue Bezeichungen genommen) dauerten dann auch nur noch ca. 10 Stunden in 2 Tagen....

Wie auch immer: Es gibt 2 neue Tabellen: Kontakte und Verein (die Adressen sind nicht gedoppelt: Jeder Verein hat nur eine Anschrift, aber innerhalb des Vereins evtl. verschiedene Kontakte. Darum m:n und nochmals Adressen).
Aber das evtl. viel schwierigere Problem ist bei mir, dass die Datenbank irgendwann unübersichtlich wird: Jedes Jahr gehen ca. 5 Kinder in die F-Jugend und bislang sind 8 wieder hinzu gekommen. Zusätzlich kam die Frage auf, ob ich irgendwann auch die F-Jugend übernehmen könnte (aber das weiß ich noch nicht, ist halt eine Zeitfrage).
D.h. irgendwann habe ich 200 aktive Kids im Programm von denen aber real nur wirklich 20 bei mir spielen, weil die anderen schon längst andere Altersgruppe sind.
Wie löse ich dieses Problem?
Anfangs dachte ich an eine zusätzliche Tabelle, die könnte man dann auch abfragen, wenn man mal aus irgendwelchen Gründen an die Daten alter Spieler will. Gegenargument: Mit dem Geburtsdatum liegen schon alle relevanten Daten vor (Regelung G-Jugend sind alle Kinder, die im Kalenderjahr, in dem das Spieljahr beginnt, noch nicht das 7. Lebensjahr vollenden oder vollendet haben).
Gegenargument: Gespeicherte Datensätze in m:n lassen vielleicht eher eine direkte Bearbeitung zu, gerade wenn man irgendwann vielleicht die Turniere für die G-Jugend und die F-Jugend organisieren muss...

Kopf raucht, ich weiß nicht was besser ist.
Wie würdet ihr das implantieren?

Vielen Dank für Eure Hilfe

Grüße

Dirk

Beaker s.a.

Hallo Dirk,
Nur kurz drüber geschaut.
Ich würde auf jeden Fall eine Tabelle für die Altersgruppen einrichten, und
auch die n:m zwischen dieser und der tblSpieler. Über die Verarbeitung denke
ich noch nach; - geht bei mir nicht so schnell  :(.
Eine andere Frage ist aber aufgetaucht, - muss nicht der Spieler auch einem
Verein angehören?
Im Moment hast du den Verein ja nur als "Ausrichter" in der tblTurniere.

gruss ekkehard

P.S.: Ein paar "Spiel"daten wären schon hilfreich. Vor allem für die geplante tblAltersgruppen, - ich kenn' mich damit nicht aus.
Alles, was geschieht, geschieht. - Alles, was während seines Geschehens etwas anderes geschehen lässt, lässt etwas anderes geschehen. - Alles, was sich selbst im Zuge seines Geschehens erneut geschehen lässt, geschieht erneut. - Allerdings tut es das nicht unbedingt in chronologischer Reihenfolge.
(Douglas Adams, Mostly Harmless)

dille999

Hallo,

so schnell pressiert es nicht. Nein, die Turniere sind von verschiedenen Vereinen, wiederholen sich aber (1-2 mal im Jahr). Die Spieler sind alle in meinem Verein: Ich will mit dieser Datenbank eigentlich nur die Übersicht über meine Kiddis haben und um einfacher die Turniere, die wir besuchen, organisieren zu können (welche Kinder nehmen teil, welche nicht).

Zu den Altersgruppen: Die Regelung besagt wie o.g. bei uns Bambinis: Alle Kinder, die im Kalenderjahr, in dem das Spieljahr beginnt, noch nicht das 7. Lebensjahr vollenden oder vollendet haben sind bei den Bambinis (also G-Jugend).
F-Jugend wären diejenigen die genau dann das 7. oder 8. Lebensjahr vollenden, E-Jugend das 9. oder 10., D-Jugend das 11.-12, C-Jugend 13.-14., B-Jugend 15.-16., A-Jugend 17.-18..
Das Spieljahr fängt am 1. August an. Altersklassen werden am 1. Januar "eingeteilt".

Regel wäre also Bambini sind:
Saison 2016/17 Bambini Jahrgänge 2010 und jünger
Saison 2016/17 F-Jugend Jahrgänge 2009 und 2008
Saison 2016/17 E-Jugend Jahrgänge 2007 und 2006
...
Saison 2017/18 Bambini Jahrgänge 2011 und jünger
Saison 2017/18 F-Jugend Jahrgänge 2010 und 2009
Saison 2017/18 E-Jugend Jahrgänge 2008 und 2007

Also Bambini Regel (mal grundlegend in meinem Laienhaften Algorithmus):
Wenn (aktuelles Datum) > (1. August) then (aktuelles Jahr)-6 andernfalls -7=BambiniKlasse
BambiniSpieler=Geburtsjahr-BambiniKlasse<=0
Betrag (Geburtsjahr-Bambiniklasse)=Restjahre bei den Bambinis

Davon ausgehen ist vielleicht die Einteilung in Jahre sinnvoller:
Wenn (aktuelles Datum) > (1. August) then (aktuelles Jahr)+1 anderfalls (aktuelles Jahr)=Einteilungsjahr

Wenn (Einteilungsjahr) - (Geburtsjahr) <=7 then Bambini
Wenn (Einteilungsjahr) - (Geburtsjahr) 8 or 9 then F-Jugend
Wenn (Einteilungsjahr) - (Geburtsjahr) 10 or 11 then E-Jugend
Wenn (Einteilungsjahr) - (Geburtsjahr) 12 or 13 then D-Jugend
Wenn (Einteilungsjahr) - (Geburtsjahr) 14 or 15 then C-Jugend
...
Habs nun ein paar mal durchgerechnet und müsste so passen (ohne Gewähr angesichts der Nachtzeit...).

Und hier liegt der Hund begraben: Findige Leute würden wahrscheinlich ohne Probleme eine SQL-Abfrage aus dem o.g. Algorithmus hinkriegen. Ich hatte schon Probleme die Version von Beaker nach 2 Monaten der Nutzung zu rekonstruieren...

Dies würde das Formular frmTurnier betreffen. D.h. es sollten nur die Spieler angezeigt werden, die das Kriterium Bambini erfüllen.

Weiterhin wäre auch ein Bericht mit gleicher Abfrage sinnvoll, der mir nur die Bambinikinder auflistet.

Falls ich die F-Jugend wirklich einmal übernehmen sollte, wäre es vielleicht sinnvoll auch bei den Turnieren eine Unterscheidung zu treffen. Komme erst jetzt darauf, werde aber in der Tabelle Turnier noch zusätzlich "KlasseTurnier" einfügen, wo dann G,F,E,D,... für G-Jugend (also Bambinis), F-Jugend usw. vermerkt ist.

Wenn jemand so eine SQL Abfrage hinkriegt, ist es richtig gedacht, dass ich einfach nur Abfragen muss, welche Klasse das Turnier hat und dann die passende SQL-Abfrage dahinter schalte und mir dann für ein G-Jugend-Turnier nur die G-JugendSpieler angezeigt werden? Oder mache ich besser für jede Altersklasse ein eigenes Formular?

So, nun ist aber spät geworden.

Ich bin echt total dankbar für Eure Hilfe, ganz besonders von Dir ekkehard

Beaker s.a.

Hallo Dirk,
Anhand deiner weiteren Beschreibungen habe ich erstmal das Datenmodell
entsprechend erweitert (s. Anl.)
Anmerkung: Das ist ein Konglomerat aus dem alten und deinem zuletzt
gezeigtem. Es war mir zu viel Aufwand die Felder umzubenennen (wegen
der Formulare). Ausserdem hatte ich so auch die gewünschten "Spiel"daten.

Bevor ich da jetzt weitermache würde ich mich wirklich freuen, wenn einer
der Regulars auch einen Blick darauf werfen könnte, ob da Fehler oder Lücken
sind. Ich weiss, dass es vielleicht etwas viel ist den ganzen Thread zu lesen,
aber eigentlich reichen die letzten 2 Posts des TS, da erst hier die Erweiterung
mit den Altersgruppen und die damit verbundene Notwendigkeit weiterer
Tabellen bekannt wurde.
Ich denke aber das die Berechnung/Zuordnung der Altersgruppen damit nicht so
schwierig werden sollte. - Vielen Dank im Voraus.

gruss ekkehard
Alles, was geschieht, geschieht. - Alles, was während seines Geschehens etwas anderes geschehen lässt, lässt etwas anderes geschehen. - Alles, was sich selbst im Zuge seines Geschehens erneut geschehen lässt, geschieht erneut. - Allerdings tut es das nicht unbedingt in chronologischer Reihenfolge.
(Douglas Adams, Mostly Harmless)

Beaker s.a.

Hallo Dirk,
Ich bin dran und komme voran  :)
Über Ostern schaffe ich den Rest.
gruss ekkehard
Alles, was geschieht, geschieht. - Alles, was während seines Geschehens etwas anderes geschehen lässt, lässt etwas anderes geschehen. - Alles, was sich selbst im Zuge seines Geschehens erneut geschehen lässt, geschieht erneut. - Allerdings tut es das nicht unbedingt in chronologischer Reihenfolge.
(Douglas Adams, Mostly Harmless)

dille999

#38
NEEEEEEEEEEEEEIN!
BITTE! Hat echt Zeit! Bitte genieße Ostern oder sonst was, aber mach dir /macht euch bitte keinen Stress deswegen!

Danke

Dirk

PS: Aber by the way: Besteht die Möglichkeit in einer (z.B. dieser) Datenbank alle Werte komplett zu löschen (auch die Autoincr.), so dass man eine "jungfräuliche" Datenbank hat? Ich muss hier dauernd mit mindestens 2 Datenbanken arbeiten, weil eine sensitive Daten von Kindern enthält. Und wenn ich Probedaten eingebe, habe ich nachher so viel Dreck drin, den ich erst mal löschen muss (jaja, ich weiß, muss bei den Autowerten nicht unbedingt sein...).


Beaker s.a.

Hallo Dirk,
Anbei die "fertige" Db; - hat Spass gemacht. Wozu ich allerdings zu faul war,
ist Dokumentation. Stehe bei Fragen aber gerne weiter zur Verfügung, auch
per PM. Hier aber eine kurze Zusammenfassung.

Altersgruppen:
Diese sind in einer Tabelle zusammengefasst, - s. Beziehungsbild. Diese musst
du auf Korrektheit der DS überprüfen und evtl. korrigieren.
Dann gibt es eine n:m-Tabelle zwischen dieser und den Spielern (s.u.). Diese
habe ich so angelegt, dass es für jeden Spieler/Saison einen Eintrag (DS) gibt,
und kann auf zwei Arten gefüllt werden,
1. bei Eingabe des Geburtstags des Spielers erfolgt die Berechnung/Speicherung
automatisch (s. Geburtsdatum_AfterUpdate)
2. in einer Schleife durch die Tabelle "Spieler" (s. Sub "SpielerAGAktualisieren").
Dazu fehlt allerdings noch die Möglichkeit des Aufrufs in einem Formular.
Da musst du dir Gedanken machen, wie du das starten willst. Ein Button im
Spieler-Form, der nur im Januar aktiv ist, oder sowas.
Anmerkung: Das geht sicher auch mit einer Anfügeabfrage, die habe ich aber
noch nicht hinbekommen.

Die Tabelle "Altersgruppen" ist zusätzl. über eine weitere n:m-Tabelle mit den
Turnieren verknüpft. Aus diesen Tabellen sind dann die Abfragen, die als
Datenherkunft von Kombis und Listen dienen, zusammengesetzt.
Im Turnier-Form gibt es jetzt ein UFo, in dem du alle ausgeschriebenen
Altergruppen zuordnen kannst. Falls dir das zu mühsam ist, könnte man das
auch, analog zu denen auf dem Spieler-Form, wieder mit zwei Listen umsetzen.

Im Spieler-Form werden im UFo (Kombifeld) jetzt auch nur noch die Turniere
mit der entsprechenden Altergruppe angezeigt, und mit dem Kombi im Formkopf
kannst du das Form auf eine Altersgruppe filtern. Einen passenden Bericht
versuche mal selbst.

Zitatso dass man eine "jungfräuliche" Datenbank hat
Die Autowerte werden bei einem "Reparieren/Komprimieren" zurück gesetzt.
Also einfach alle DS löschen (ausser in den Tabellen "Altersgruppen" und
"Saisonkalender") und dann reparieren/komprimieren.
Da sollten die Autowerte wieder bei 1 anfangen. Obwohl du den "Sinn" ja schon
erkannt hast
Zitatjaja, ich weiß, muss bei den Autowerten nicht unbedingt sein

gruss ekkehard
Alles, was geschieht, geschieht. - Alles, was während seines Geschehens etwas anderes geschehen lässt, lässt etwas anderes geschehen. - Alles, was sich selbst im Zuge seines Geschehens erneut geschehen lässt, geschieht erneut. - Allerdings tut es das nicht unbedingt in chronologischer Reihenfolge.
(Douglas Adams, Mostly Harmless)

dille999

Super,
ganz vielen Dank.
Ich war leider kurzfristig beruflich unterwegs und konnte daher erst jetzt schauen: Das sieht echt klasse aus.
Ich habe nur 2 Probleme: Wenn ich das Alter eines Spielers eingetragen habe, ändert sich nicht mehr die Altersklasse. Bei einem Rechtschreibfehler wird die nicht aktualisiert. Ich muss mich da mal ein bisschen reinfuchsen, ich denke mal, wenn ich die Aktualisierungsprozedur auch in die Prozedur vom Datumfeld reinnehme müsste es klappen... Ich probier einfach mal.
Die Tabelle Saisonkalender habe ich noch nicht ganz verstanden... Lasst mir mal ein bisschen Zeit um das ganze Verdauen zu können.

Jedenfalls ganz lieben Dank

Dirk

Beaker s.a.

Hallo Dirk,
Sorry für späte Antwort, aber seit Ostern läuft das einzige Sportereignis, das mich
wirklich interessiert, - Snooker-WM. Und da das zu fast 90% live übertragen
wird, na ja ...
ZitatWenn ich das Alter eines Spielers eingetragen habe, ändert sich nicht mehr die Altersklasse. Bei einem Rechtschreibfehler wird die nicht aktualisiert.
Ja, das habe ich auch bemerkt. Eine endgültige Lösung ist mir noch nicht eingefallen.
Die AG wird ja anhand der Saison bestimmt bzw. zusammen damit gespeichert. Und
durch den Mehrfelderindex in der Zwischentabelle ist halt pro Saison nur ein Eintrag
möglich. Das einfachste wird wohl sein in die Prozedur noch eine Abfrage auf Vorhandensein
ein zu bauen, und dementsprechend "AddNew" oder "Update" zu verwenden.
Zitatich denke mal, wenn ich die Aktualisierungsprozedur auch in die Prozedur vom Datumfeld reinnehme müsste
Da ist sie ja.
ZitatDie Tabelle Saisonkalender habe ich noch nicht ganz verstanden
Die brauchen wir für die Abfrage, die ich, wie angesprochen, noch nicht zusammen
bekommen habe, um die Aktualisierung der AG am Anfang des Jahres ohne die
jetzige Schleife zu erledigen.
Ich bleibe aber dran.

gruss ekkehard


P.S. Endspiel läuft nächsten Montag.
Alles, was geschieht, geschieht. - Alles, was während seines Geschehens etwas anderes geschehen lässt, lässt etwas anderes geschehen. - Alles, was sich selbst im Zuge seines Geschehens erneut geschehen lässt, geschieht erneut. - Allerdings tut es das nicht unbedingt in chronologischer Reihenfolge.
(Douglas Adams, Mostly Harmless)

Beaker s.a.

Hallo Dirk,
Anbei die DB mit der geänderten Prozedur zur Errechnung der Altersgruppe.
Die Idee mit der Kalendertabelle habe ich verworfen; - Tabelle und zugehörige
Prozeduren daher entfernt.
gruss ekkehard
Alles, was geschieht, geschieht. - Alles, was während seines Geschehens etwas anderes geschehen lässt, lässt etwas anderes geschehen. - Alles, was sich selbst im Zuge seines Geschehens erneut geschehen lässt, geschieht erneut. - Allerdings tut es das nicht unbedingt in chronologischer Reihenfolge.
(Douglas Adams, Mostly Harmless)