Neuigkeiten:

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

Mobiles Hauptmenü

Tabelle aus Daten von 2 Quellen erstellen

Begonnen von joschi50, Juli 29, 2022, 16:58:56

⏪ vorheriges - nächstes ⏩

joschi50

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.




Auch Wolkenkratzer haben mal als Keller angefangen.

joschi50

#1
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.
Sie dürfen in diesem Board keine Dateianhänge sehen.
Auch Wolkenkratzer haben mal als Keller angefangen.

joschi50

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
Auch Wolkenkratzer haben mal als Keller angefangen.

Beaker s.a.

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 '.
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)

joschi50

Hallo Beaker,

tausend Dank, das war es.
Funktioniert wunderbar :-)
Auch Wolkenkratzer haben mal als Keller angefangen.