Hallo,
ich komme mal wieder nicht weiter.
Für ein Boulturnier existiert eine Tabelle TBdoub6.
Hierin sind für ein Turnier von 6 Teams und 4 Runden, die möglichen SpielPaarungen eingetragen so daß nie ein Team gegen den selben Gegner spielt.
runde team gegner
1 1 3
1 2 4
1 6 5
2 1 2
2 3 5
2 4 6
3 1 6
3 3 2
3 4 5
4 4 1
4 2 5
4 3 6
In einer weiteren Tabelle "doubletteteams" ist der Turniername, Teamnummer, Name1, Name2 hinterlegt.
ID Turniername Teamnummer Name1 Name2
16 Ebersbacher BC Turnier 1 Otto Richer Jochen Kröplin
17 Ebersbacher BC Turnier 2 Holger Bischof Josef Langner
18 Ebersbacher BC Turnier 3 Heike Raubner Claudia Bauer
19 Ebersbacher BC Turnier 4 Walter Ring Ursula Bauer
20 Ebersbacher BC Turnier 5 Braun Rudolf Jutta Kröplin
21 Ebersbacher BC Turnier 6 Martin Asbach Thomas Bischoff
In die zu erstellende Tabelle Tdoubrd müssten jetzt alle Runden und Spieler eingetragen werden und natürlich die Vorgabe aus Tabelle TBdoub6 berücksichtigt werden. Die Namen der Spieler mit Zuordnung zu einem Team sowie den Turniernamen holt man sich aus der Tabelle "doubletteteams"
Also: Schreibe 12 Datensätze in die Tabelle Tdoubrd mit folgenden Feldern:
Turniername, Teamnr1, Teamnr2, Spieler1, Spieler2, Spieler3, Spieler4 wobei Spieler1 und Spieler 2 ein Team sind sowie Spieler 3 und Spieler4.
Wie müsste eine Lösung denn vom Ansatz aussehen ?
Ich stehe völlig auf dem Schlauch.
Ich bin ein Stück weiter gekommen und konnte die Tabelle Tdoubrd mit den 12 Datensätzen erzeugen.
In der Tabelle sind die Rundennummern sowie die Teamzahlen enthalten.
Was fehlt sind noch die Namen die aus der Tabelle "doubletteteams" geholten und zugeorndet werden müssen.
Hier mein Code
Dim RS As DAO.Recordset, i As Long
Set RS = CurrentDb.OpenRecordset("Select * From tbdoub6", dbOpenSnapshot)
Do Until RS.EOF
rundez = RS!Runde
teamz = RS!team
gegnerz = RS!gegner
Set RS2 = CurrentDb().OpenRecordset("tdoubrd", dbOpenDynaset, dbAppendOnly)
RS2.AddNew
RS2.TurniernameRD = Forms!Turniere!Turniernm
RS2.Teamnr1 = teamz
RS2.Teamnr2 = gegnerz
RS2.Spielrunde = rundez
RS2.Update
RS2.Close
Set RS2 = Nothing
RS.MoveNext
Loop
RS.Close
Set RS = Nothing
Wie kann ich das in den Quellcode einbauen ?
Mein Formular sieht derzeit so aus.
screen.JPG
Neuer Ansatz mit Dlookup aber er setzt mir die Namen nicht
Dim RS As DAO.Recordset, i As Long
Set RS = CurrentDb.OpenRecordset("Select * From tbdoub6", dbOpenSnapshot)
Do Until RS.EOF
rundez = RS!Runde
teamz = RS!team
gegnerz = RS!gegner
'Dim RS2 As DAO.Recordset
Set RS2 = CurrentDb().OpenRecordset("tdoubrd", dbOpenDynaset, dbAppendOnly)
RS2.AddNew
RS2.TurniernameRD = Forms!Turniere!Turniernm
RS2.Teamnr1 = teamz
RS2.Teamnr2 = gegnerz
RS2.Spieler1 = DLookup("Name1", "doubletteteams", "Turniername" = [Forms]![Turniere]![Turniernm] And "Teamnummer" = teamz)
RS2.Spieler2 = DLookup("Name2", "doubletteteams", "Turniername" = [Forms]![Turniere]![Turniernm] And "Teamnummer" = teamz)
RS2.Spieler3 = DLookup("Name1", "doubletteteams", "Turniername" = [Forms]![Turniere]![Turniernm] And "Teamnummer" = gegnerz)
RS2.Spieler4 = DLookup("Name2", "doubletteteams", "Turniername" = [Forms]![Turniere]![Turniernm] And "Teamnummer" = gegnerz)
RS2.Spielrunde = rundez
RS2.Update
RS2.Close
Set RS2 = Nothing
RS.MoveNext
Loop
RS.Close
Set RS = Nothing
End Sub
Hallo Joschi,
Die Kriterien für eine Domänenaggregat-Funktion entsprechen einer
WHERE-Bedingung in SQL und müssen mit der entsprechenden Syntax
übergeben werden
DLookup("Name1", "doubletteteams", "Turniername = '" & [Forms]![Turniere]![Turniernm] & "' And Teamnummer = " & teamz)
Der Turniername ist vom Typ String und muss deshalb zwischen '.
Solch zusammen gesetzte Kriterien sollte man sich immer mit
Debug.Print
vorher anschauen.
gruss ekkehard
edit: Ganz vergessen; - das Turnier sollte besser über seine ID gefiltert werden.
Dann ohne '.
Hallo Beaker,
tausend Dank, das war es.
Funktioniert wunderbar :-)