2015-12-18 2 views
0

Bonjour,Accès INSERT INTO - à quelques paramètres. attendu 2

J'ai un problème avec une instruction INSERT dans VBA. Chaque fois que j'essaie d'insérer un nouvel enregistrement dans la table via l'entrée du formulaire, j'obtiens une erreur. Erreur d'exécution '3061': Trop peu de paramètres. Prévu 2.

Et c'est le VBA derrière cela.

Private Sub Command242_Click() 
Dim dbs As Database 

' Modify this line to include the path to Northwind 
' on your computer. 
Set dbs = CurrentDb 

'Testing purpose 
Me.cbPenalty1 = 0 
Me.cbOwnGoal1 = 0 
' Create a new record in the tblMatchPlayer table. 
' Query saved the player who scored with values in a new row, linked with MatchID & PlayerID. 

'Testing purpose MsgBox - DELETE WHEN WORKS!! 
MsgBox " INSERT INTO tblMatchPlayer " _ 
     & "(MatchID, PlayerID, SubstituteID, PositionID, Surname, ScoreTime, RedCards, YellowCards, Substitude, Penalty, OwnGoal, Assist) VALUES " _ 
     & "(" & Me.MatchID & ", '', '', '', " & Me.cmScoreName1 & ", " & Me.tbScoreTime1 & ", '', '', '', " & Me.cbPenalty1 & ", " & Me.cbOwnGoal1 & ", " & Me.cmAssist1 & ");", vbOKOnly, "Query Show" 
'Actual INSERT 
dbs.Execute " INSERT INTO tblMatchPlayer " _ 
     & "(MatchID, PlayerID, SubstituteID, PositionID, Surname, ScoreTime, RedCards, YellowCards, Substitude, Penalty, OwnGoal, Assist) VALUES " _ 
     & "(" & Me.MatchID & ", '', '', '', " & Me.cmScoreName1 & ", " & Me.tbScoreTime1 & ", '', '', '', " & Me.cbPenalty1 & ", " & Me.cbOwnGoal1 & ", " & Me.cmAssist1 & ");" 

dbs.Close 

End Sub 

Lorsque les pop-ups MsgBox jusqu'à me montrer de la requête, il va écrire dans le tableau que je reçois ces résultats.

INSERT INTO tblMatchPlayer (MatchID, PlayerID, substituteID, PositionID, Nom, ScoreTime, RedCards, YellowCards, Substitude, Pénalité, OwnGoal, Assist) VALUES (29, '', '', '', Grozema, 34 , '', '', '', 0, 0, Bruins);

Je ne vois rien de mal avec cette requête d'insertion .. cependant VBA semble penser qu'il manque certains paramètres mais je ne sais pas quels paramètres.

Les champs de ma table sont comme ceci.

  • MatchPlayerID - Autonumber
  • MatchID - Nombre
  • PlayerID - Nombre
  • SubstituteID - Nombre
  • PositionID - Nombre
  • Nom - Texte
  • ScoreTime - Texte
  • RedCards - Texte
  • YellowCards - Texte
  • Substitude - Texte
  • Pénalité - Oui/Non
  • OwnGoal - Oui/Non
  • Assist - Texte

Pouvez-vous les gars me aider?

Cordialement, Patrick

+0

Accepte-t-il des valeurs nulles? –

+0

Voulez-vous dire le champ vide? ou voulez-vous dire les champs Oui/Non? – PatrickStel

+0

Vous faites probablement une faute de frappe avec ce champ: 'OwnGoals'. Dans votre requête, vous avez 'OwnGoal' - sans s. Aussi, je ne suis pas sûr si vous pouvez donner la chaîne vide '' '' comme un champ 'PlayerID' s'il est de type Number (la même chose avec d'autres champs, ie' SubstituteID') - peut-être essayer de le changer à 0 au lieu de chaîne vide. – mielk

Répondre

0

Au lieu de voir votre instruction SQL dans un MsgBox, Debug.Print il. Puis copiez-le, créez une nouvelle requête, passez en vue SQL et collez l'instruction en tant que SQL. Passer en mode conception et le problème va élever sa tête.

+0

Tnxs pour le conseil. Utilisation complète lorsque quelque chose est à nouveau brisée – PatrickStel