title image


Smiley Das ist relativ easy ...
Hallo Klaus,



öffne Deine Kombitabelle im Entwurfsmodus, dann markierst Du die Spalten TrainingsID und SpielerID und weist dann diesen beiden den Primärschlüssel zu. Das Ergebnis sollte so aussehen, wie im Bild.

Access sollte bei beiden Feldern dabei auch automatisch die Indiziert-Eigenschaft auf "Ja (Duplikate möglich)" stellen.

Damit stellst Du sicher, dass die Kombination aus TrainingsID und SpielerID immer nur einmal in der KombiTabelle auftaucht.



Hinweis:

Falls Du mal bereits Spieler zu einer TrainingsID in die KombiTabelle eingetragen hast und "unerwartet" neue Spieler hinzukommen, dann kannst Du zwar auch den Code benutzen, aber er wird auf eine Fehler laufen (Doppelter Index oder Primärschlüssel). Wenn Du die Meldung nicht haben willst, dann lass bei CurrentDb.Execute sSQL, dbFailOnError den zweiten Parameter weg (also nur CurrentDb.Execute sSQL); das bewirkt, dass potentielle Fehlermeldungen ignoriert werden; allerdings bekommst Du dann auch keinen Meldung bei anderen Fehlern (z.B. wg. fehlerhafter SQL-Syntax o.ä.). Alternativ dazu könnte man mit Recordsets arbeiten und die in einer Schleife durchlaufen; wäre zwar die langsamste, aber eleganteste Methode.









Sub SpielerEintragen()

  Dim TrainingID As Long

  Dim sSQL As String

  Dim rsTeam As DAO.Recordset, rsZiel As DAO.Recordset



  TrainingID = 1



  sSQL = "SELECT SpielerID FROM Team ORDER BY SpielerID;"

  Set rsTeam = CurrentDb.OpenRecordset(sSQL, dbOpenSnapshot)



  sSQL = "SELECT * FROM KombiTabelle WHERE TrainingID=" & TrainingID & " ORDER BY SpielerID;"

  Set rsZiel = CurrentDb.OpenRecordset(sSQL, dbOpenDynaset)



  rsTeam.MoveFirst

  Do

    rsZiel.FindFirst "TrainingID=" & TrainingID & " AND SpielerID=" & rsTeam("SpielerID")

    If rsZiel.NoMatch Then

      rsZiel.AddNew

      rsZiel("TrainingID") = TrainingID

      rsZiel("SpielerID") = rsTeam("SpielerID")

      rsZiel("StatusID") = Null

      rsZiel.Update

    End If

    rsTeam.MoveNext

  Loop Until rsTeam.EOF

End Sub





Code eingefügt mit Syntaxhighlighter 4.0







Gruss




scotty

I´m an admin. If you see me laughing, you should better have a backup.
Einen Fehler machen und ihn nicht korrigieren - das erst heisst wirklich einen Fehler machen.
Konfuzius


geschrieben von

Anhang
Bild 11700 zu Artikel 549917

Login

E-Mail:
  

Passwort:
  

Beitrag anfügen

Symbol:
 
 
 
 
 
 
 
 
 
 
 
 
 

Überschrift: