2016-04-24 7 views
0

Ich bin irgendwie auf meinem Projekt fest.MS Acces VBA: Update Schleife mit mehreren IDs

Im Moment habe ich ein Formular, wo Sie die Liste für die Spieler ausfüllen können. Es besteht aus einer Formation (wie 4-3-3), dann wird es Positionen für die Spieler zeigen, wo Sie einen Namen aus einer Dropdown-Liste auswählen können.

Jetzt möchte ich auch die Shirt-Nummer hinzufügen, aber ich bin auf diesem Teil stecken. Ich habe keine Ahnung, wie ich alle Spieler aktualisieren soll, bei denen die MatchID die MatchID, an der ich gerade arbeite, und die PlayerID ausgleicht. Weil jeder Spieler eine andere T-Shirt Nummer hat.

Option Compare Database 
Private Sub Form_Load() 
Me.MatchID = Me.OpenArgs 
End Sub 

'This Sub shows the fields where you can select the players according to the chosen formation. 

Private Sub Formation_AfterUpdate() 
Dim DefenderLoopVal, MidfielderLoopVal, StrikerLoopVal As String 

'Get the formation from the form. 
Formation = Me.Formation 

'Explode the formation on the - character 
FormationExploded = Split(Formation, "-") 

'Put the numbers is new variables to use in the Loops. 
DefenderLoopVal = FormationExploded(0) 
MidfielderLoopVal = FormationExploded(1) 
StrikerLoopVal = FormationExploded(2) 

'MsgBox DefenderLoopVal 
'MsgBox MidfielderLoopVal 
'MsgBox StrikerLoopVal 

'Make Keeper Visable. 
Me.imgKeeper.Visible = True 
Me.cbKeeper.Visible = True 
Me.NrKeeper.Visible = True 

'Make as many textboxes visible as necessary 
For i = 1 To DefenderLoopVal 
    Form_frmFormation.Controls("cbDefender" & i).Visible = True 
    Form_frmFormation.Controls("imgDefender" & i).Visible = True 
    Form_frmFormation.Controls("nrDefender" & i).Visible = True 
Next 

For i = 1 To MidfielderLoopVal 
    Form_frmFormation.Controls("cbMidfielder" & i).Visible = True 
    Form_frmFormation.Controls("imgMidfielder" & i).Visible = True 
    Form_frmFormation.Controls("nrMidfielder" & i).Visible = True 
Next 

For i = 1 To StrikerLoopVal 
    Form_frmFormation.Controls("cbStriker" & i).Visible = True 
    Form_frmFormation.Controls("imgStriker" & i).Visible = True 
    Form_frmFormation.Controls("nrStriker" & i).Visible = True 
Next 

End Sub 

'This is the actual saving Sub, it will save the players on the according positions 
Private Sub Save_Formation_Click() 
Dim dbs As DAO.Database 
Dim rs As DAO.Recordset 



Set dbs = CurrentDb 
Set rs = dbs.OpenRecordset("tblMatchFormation", dbOpenDynaset, dbAppendOnly) 

rs.AddNew 
rs!MatchID = Me!MatchID 
rs!FormationID = Me!Formation 
rs!Keeper = Me!cbKeeper 
rs!CenterDefender = Me!cbDefender1 
rs!CenterRightDefender = Me!cbDefender2 
rs!CenterLeftDefender = Me!cbDefender3 
rs!LeftDefender = Me!cbDefender4 
rs!RightDefender = Me!cbDefender5 
rs!CenterMidfielder = Me!cbMidfielder1 
rs!CenterRightMidfielder = Me!cbMidfielder2 
rs!CenterLeftMidfielder = Me!cbMidfielder3 
rs!LeftMidfielder = Me!cbMidfielder4 
rs!RightMidfielder = Me!cbMidfielder5 
rs!CenterStriker = Me!cbStriker1 
rs!RightStriker = Me!cbStriker2 
rs!LeftStriker = Me!cbStriker3 
rs.Update 

'Should have a update query here that updates the tblMatchPlayer with the numbers according to the MatchID and PlayerID 

End Sub 

Aber jetzt will ich auch die Spieler Nummer hinzuzufügen, wird das Feld auf einer anderen Tabelle mit dem Namen tblMatchPlayer, die alle die Spieler Details in dieser Tabelle

TblMatchFormation

gespeichert werden

MatchFormationID (Autowert)

FormationID (Ruft die ID der Formation, die gespielt wird)

MatchID (Ruft die ID des Spiels)

Keeper (Ruft die ID des Spielers, ein Torwart)

CenterDefender (Ruft die ID des Spielers, ein CenterDefender ist)

usw.

tblMatchPlayer

MatchPlayerID (Autowert)

MatchID (Ruft die ID des Spiels von einer früheren Form)

PlayerID (Ruft die ID des Spielers aus einer früheren Form)

Nachname (Ruft den Namen des Spielers eine frühere Form bilden)

ShirtNumber

Vielleicht euch (Sollte die Zahl bilden die Form bekommen) kann mir helfen?

Mit freundlichen Grüßen Patrick

Antwort

0

Die SQL-Anweisung, dies zu tun, wenn ich Sie richtig verstehe, wäre:

UPDATE tblMatchPlayer SET ShirtNumber = <shirt number> 
WHERE MatchID = <matchID> AND PlayerID = <playerID>; 

oder es in VB eine Konstruktion, wie:

Dim strSQL As String 
strSQL= "UPDATE tblMatchPlayer SET ShirtNumber = '" & shirt_number & "' " & _ 
     "WHERE MatchID = '" & matchID & "' AND PlayerID = '" & playerID &"';" 

Um die Abfrage auszuführen:

dbs.Execute strSQL 
+0

Danke, das brauche ich – PatrickStel