Problemstellung:
ein Bekannter fragte mich vor einiger Zeit ob es möglich wäre mit MS-Access
ein Skatturnier zu verwalten bzw. die Teilnehmer per Zufall den Tischen zu zuordnen usw.
Ich sagte ja, das kann ich machen.
Das Ergebnis stelle ich Euch hier vor.
Wobei vorweg gesagt sein muss das es keine vollständige Verwaltung ist oder sein soll
Voraussetzungen:
Das Bsp ist ab A00 lauffähig. (Download enthält eine mdb-Datei)
Lösung:
Am Anfang stehen 5 Tabellen für:
Turnier, Teilnehmer, Tische, Plätze und die Besetzung
In der Tabelle Turnier kommen einige Stammdaten für das jeweilige Turnier
wie Datum, Ort, Anzahl der Teilnehmer, Anzahl der zu spielenden Runden und ob vorrangig
3er oder 4er Tische benutzt werden sollen.
Am Anfang stehen 5 Tabellen für:
Turnier, Teilnehmer, Tische, Plätze und die Besetzung
In der Tabelle Turnier kommen einige Stammdaten für das jeweilige Turnier
wie Datum, Ort, Anzahl der Teilnehmer, Anzahl der zu spielenden Runden und ob vorrangig
3er oder 4er Tische benutzt werden sollen.
Nach dem Klick auf den Button "Tische, Plätze und Teilnehmer erzeugen" laufen einige Routinen ab
in der die Tabellen mit Daten gefüllt werden.
in der die Tabellen mit Daten gefüllt werden.
z.B. zum ermitteln der erforderlichen Tischanzahl (je nach Priorität 3er oder 4er Tische)
Public Type COUNTTABLE iThree As Integer iFour As Integer End Type Public Function CalcTable(iCountMember As Integer, iTablePriority As Integer) As COUNTTABLE Dim i3 As Integer, i4 As Integer If iTablePriority = 3 Then 'Dreiertische If iCountMember Mod 3 > 0 Then i3 = Int(iCountMember / 3) - (iCountMember Mod 3) i4 = iCountMember Mod 3 Else i3 = Int(iCountMember / 3) i4 = 0 End If Else 'Vierertische If iCountMember Mod 4 > 0 Then i4 = Int(iCountMember / 4) + (iCountMember Mod 4) - 3 i3 = 4 - (iCountMember Mod 4) Else i4 = Int(iCountMember / 4) i3 = 0 End If End If CalcTable.iThree = i3 CalcTable.iFour = i4 End Function
Diese Funktion gibt dann die erforderliche Anzahl der Tische zurück
z.B.
Teilnehmer = 22 und 4er Tische
Dim tTable As COUNTTABLE Dim i3 As Integer, i4 As Integer tTable = CalcTable(22, 4) i3 = tTable.iThree i4 = tTable.iFour MsgBox i3 & " '3er Tische'" & vbNewLine & "und" & vbNewLine & i4 & " '4er Tische'"
Ergebnis:
Dann werden die anderen Tabellen gefüllt; Platznummern und Teilnehmer.
Rechts im Unterformular müssen dann die Namen der Teilnehmer eingegeben werden.
Es kann immer vor Turnierbeginn die Besetzung der Tische per Zufall neu gestartet werden.
Es kann immer vor Turnierbeginn die Besetzung der Tische per Zufall neu gestartet werden.
Dafür einfach den Button "zufällige Besetzung der Plätze" anklicken.
Diese erfolgt nach dem Zufallsprinzip. s. Sub "Private Sub FillCast()"
Diese erfolgt nach dem Zufallsprinzip. s. Sub "Private Sub FillCast()"
Wird die zufällige Besetzung vor der Eingabe der Namen erzeugt klappt das zwar auch aber das Ergebnis ist nicht ganz so zufällig.
Wichtig: die Checkbox "auch Namen löschen" muss in diesem Fall deaktiv sein, sonst werden die Namen mitgelöscht.
In den beiden Listenfeldern werden dann die Tische und die Belegung in der jeweiligen Runde dargestellt.
Zur besseren Übersicht gibt es dann unten noch die visuelle Tischbelegung.
Dateien:
Verwaltung eines Skatturniers
ab A00
Die Zip-Datei enthält eine Version ab A00
Weiterlesen...