J'ai commencé à utiliser l'accès récemment. J'essaie d'insérer quelques lignes dans la base de données; Cependant, je suis bloqué car il y a une erreur:
Trop peu de paramètres.
J'ai un test de table avec une seule colonne nommée start_date. Je veux insérer toutes les dates entre deux dates, par exemple, si je considère le 1/7/2014 au 3/7/2014, j'ai besoin de dates comme le 1/7/2014,2/7/2014,3/7/2014 dans mon tableau, mais le problème pour insérer le code que j'ai utilisé est le suivant
Private Sub createRec_Click()
Dim StrSQL As String
Dim InDate As Date
Dim DatDiff As Integer
Dim db As database
InDate=Me.FromDateTxt
'here I have used a code to find out the difference between two dates that i've not written
For i = 1 To DatDiff
StrSQL = "INSERT INTO Test (Start_Date) VALUES ('" & InDate & "' );"
StrSQL = StrSQL & "SELECT 'Test'"
db.Execute StrSQL
db.close
i=i+1
next i
End Sub
Mon code jette une erreur dans la ligne Db.Execuite StrSQL Car trop peu de paramètres . J'espère que quelqu'un pourra m'aider avec ce problème . Merci à l'avance
puisque vous avez mentionné que vous êtes un nouvel utilisateur, il fallait que je vous invite à supprimer les erreurs du code (la boucle incomplète et l'instruction SQL). Sinon, vous aurez sûrement besoin de la boucle for pour insérer des dates dans une certaine plage.
Utilisez maintenant le code ci-dessous pour insérer les valeurs de date dans votre tableau. J'ai testé le code et ça marche. Vous pouvez l'essayer aussi. Après cela, ajoutez votre boucle for en fonction de votre scénario.
Dim StrSQL As String
Dim InDate As Date
Dim DatDiff As Integer
InDate = Me.FromDateTxt
StrSQL = "INSERT INTO Test (Start_Date) VALUES ('" & InDate & "' );"
DoCmd.SetWarnings False
DoCmd.RunSQL StrSQL
DoCmd.SetWarnings True
Vous ne pouvez pas exécuter deux instructions SQL en une seule comme vous le faites.
Vous ne pouvez pas "exécuter" une requête de sélection.
db est un objet et vous ne l'avez défini sur rien: (par exemple, set db = currentdb)
Dans VBA, les types entiers peuvent contenir jusqu'à 32 767 - je serais tenté d'utiliser Long.
Vous voudrez peut-être préciser un peu la date que vous insérez:
INSERT INTO Test (Start_Date) VALUES ('#" & format(InDate, "mm/dd/yyyy") & "#' );"
en résumé: Supprimez ces deux lignes de code ci-dessus et votre instruction insert fonctionnera correctement. Vous pouvez le modifier ultérieurement pour l'adapter à vos besoins spécifiques. Et au fait, parfois, vous devez joindre des dates avec des signes de livres comme #