De rien,
Pouvez-vous clore la discussion ?
Cdlt,
PS: personnellement pour ce genre d'opération j'utilise plutôt les recordset
De rien,
Pouvez-vous clore la discussion ?
Cdlt,
PS: personnellement pour ce genre d'opération j'utilise plutôt les recordset
Vous trouverez dans la FAQ, les sources ou les tutoriels, de l'information accessible au plus grand nombre, plein de bonnes choses à consulter sans modération
Des tutoriels pour apprendre à créer des formulaires de planning dans vos applications Access :
Gestion sur un planning des présences et des absences des employés
Gestion des rendez-vous sur un calendrier mensuel
Importer un fichier JSON dans une base de données Access :
Import Fichier JSON
bonjour,
Voici le code final pour l'ajout des dates, pourriez-vous jeter un œil, j'ai un message d'erreur : Erreur de synutaxe dans l'instruction INSERT INTO
Merci
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33 Private Sub CmdAdd_Click() Confirme = MsgBox("Voulez-vous ajouter ces dates sur le planning ?", vbYesNoCancel) Select Case Confirme Case vbYes: DtDeb = Me.DateD DtFin = Me.DateF Num_Contrat = Me.IDContrat Nom_Enfant = Me.Enfant Nom_Garde = Me.Garde Num_Groupe = Me.Groupe Nb_Place = Me.Place Nom_Employe = Me.AffectéA Nom_Utilisateur = Me.SaisiPar Date_Saisi = Me.DateCréation ' For Boucle = 0 To DateDiff("d", DtDeb, DtFin) DateC = DtDeb + Boucle j = Weekday(DateC, 2) If Me("Jour" & j).Value = True Then DoCmd.SetWarnings False CurrentDb.Execute "INSERT INTO Planning ( IDContrat, Enfant, Garde, Groupe, Place, AffectéA, SaisiPar, DateCréation, Jour ) SELECT " & Num_Contrat & " AS Num_Contrat, " & Nom_Enfant & " AS Nom_Enfant, " & Nom_Garde & " AS Nom_Garde, " & Num_Groupe & " AS Num_Groupe, " & Nb_Place & " AS Nb_Place, " & Nom_Employe & " AS Nom_Employe, " & Nom_Utilisateur & " AS Nom_Utilisateur, #" & Format(DateCréation, "mm-dd-yyyy") & " # AS Date_Saisi, #" & Format(DateC, "mm-dd-yyyy") & "# AS Jour;" DoCmd.SetWarnings True End If Next MsgBox ("Les gardes ont été ajoutés sur le planning selon les dates indiquées") DoCmd.Close Case vbNo: Me.Undo ' Non : On annule les changements... DoCmd.Close ' ... et on ferme Case vbCancel: ' Rien ne se passe : On reste dans le formulaire End Select End Sub
Bonjour,
remplace les doubles quote du formatage de tes dates par des simples quote cela devrait résoudre ton problème :et l'alias des champs n'est pas nécessaire dans une instruction SELECT quand c'est pour une utilisation dans un INSERT INTO dans du code VBA.
Code : Sélectionner tout - Visualiser dans une fenêtre à part ...#" & Format(DateCréation, 'mm-dd-yyyy') & " # AS Date_Saisi,"...
Quand on est derrière l'écran on n'a aucun clavier sous les mains ...
ah non ? donc devant l'écran c'est la connectique ?
Bonjour,
Merci de ton retour,
Le code suivant fonctionne très bien :
A partir du moment ou je rajoute d'autres champs, j'ai un message d'erreur ...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26 Private Sub CmdAdd_Click() Confirme = MsgBox("Voulez-vous ajouter ces dates sur le planning ?", vbYesNoCancel) Select Case Confirme Case vbYes: DtDeb = Me.DateD DtFin = Me.DateF Num_Contrat = Me.IDContrat Nom_Enfant = Me.Enfant ' For Boucle = 0 To DateDiff("d", DtDeb, DtFin) DateC = DtDeb + Boucle j = Weekday(DateC, 2) If Me("Jour" & j).Value = True Then DoCmd.SetWarnings False CurrentDb.Execute "INSERT INTO Planning ( IDContrat, Enfant, Jour ) SELECT " & Num_Contrat & " AS Num_Contrat, " & Nom_Enfant & " AS Nom_Enfant, #" & Format(DateC, "mm-dd-yyyy") & "# AS Jour;" DoCmd.SetWarnings True End If Next MsgBox ("Les gardes ont été ajouté sur le planning selon les dates indiqués") DoCmd.Close Case vbNo: Me.Undo ' Non : On annule les changements... DoCmd.Close ' ... et on ferme Case vbCancel: ' Rien ne se passe : On reste dans le formulaire End Select End Sub
Quel message d'erreur ? Quels sont les champs qui posent problème ?A partir du moment ou je rajoute d'autres champs, j'ai un message d'erreur ...
Quand on est derrière l'écran on n'a aucun clavier sous les mains ...
ah non ? donc devant l'écran c'est la connectique ?
Ok, il faut regarder le résultat de la construction de la requête.
Peux-tu remplacer ceci :par :
Code : Sélectionner tout - Visualiser dans une fenêtre à part CurrentDb.Execute "INSERT INTO Planning ( IDContrat, Enfant, Jour ) SELECT " & Num_Contrat & " AS Num_Contrat, " & Nom_Enfant & " AS Nom_Enfant, #" & Format(DateC, "mm-dd-yyyy") & "# AS Jour;"et poster le résultat du Debug.Print qui s'est édité dans la fenêtre d'exécution de VBA ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 Dim stSQL As String stSQL = "INSERT INTO Planning ( IDContrat, Enfant, Jour ) SELECT " & Num_Contrat & " AS Num_Contrat, " & Nom_Enfant & " AS Nom_Enfant, #" & Format(DateC, "mm-dd-yyyy") & "# AS Jour;" Debug.Print stSQL CurrentDb.Execute stSQL
Quand on est derrière l'écran on n'a aucun clavier sous les mains ...
ah non ? donc devant l'écran c'est la connectique ?
Ce code fonctionne à l'origine;
résultat d'exécution :
Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 INSERT INTO Planning ( IDContrat, Enfant, Jour ) SELECT 35 AS Num_Contrat, 6 AS Nom_Enfant, #11-07-2016# AS Jour; INSERT INTO Planning ( IDContrat, Enfant, Jour ) SELECT 35 AS Num_Contrat, 6 AS Nom_Enfant, #11-14-2016# AS Jour; INSERT INTO Planning ( IDContrat, Enfant, Jour ) SELECT 35 AS Num_Contrat, 6 AS Nom_Enfant, #11-21-2016# AS Jour; INSERT INTO Planning ( IDContrat, Enfant, Jour ) SELECT 35 AS Num_Contrat, 6 AS Nom_Enfant, #11-28-2016# AS Jour; INSERT INTO Planning ( IDContrat, Enfant, Jour ) SELECT 35 AS Num_Contrat, 6 AS Nom_Enfant, #11-07-2016# AS Jour; INSERT INTO Planning ( IDContrat, Enfant, Jour ) SELECT 35 AS Num_Contrat, 6 AS Nom_Enfant, #11-14-2016# AS Jour; INSERT INTO Planning ( IDContrat, Enfant, Jour ) SELECT 35 AS Num_Contrat, 6 AS Nom_Enfant, #11-21-2016# AS Jour; INSERT INTO Planning ( IDContrat, Enfant, Jour ) SELECT 35 AS Num_Contrat, 6 AS Nom_Enfant, #11-28-2016# AS Jour;
Et qu'est-ce qui provoque l'erreur ?
Quand on est derrière l'écran on n'a aucun clavier sous les mains ...
ah non ? donc devant l'écran c'est la connectique ?
Montre le code sinon on ne peut pas trouver !
Quand on est derrière l'écran on n'a aucun clavier sous les mains ...
ah non ? donc devant l'écran c'est la connectique ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33 Private Sub CmdAdd_Click() Confirme = MsgBox("Voulez-vous ajouter ces dates sur le planning ?", vbYesNoCancel) Select Case Confirme Case vbYes: DtDeb = Me.DateD DtFin = Me.DateF Num_Contrat = Me.IDContrat Nom_Enfant = Me.Enfant Nom_Garde = Me.Garde Num_Groupe = Me.Groupe Nb_Place = Me.Place Nom_Employe = Me.AffectéA Nom_Utilisateur = Me.SaisiPar Date_Saisi = Me.DateCréation ' For Boucle = 0 To DateDiff("d", DtDeb, DtFin) DateC = DtDeb + Boucle j = Weekday(DateC, 2) If Me("Jour" & j).Value = True Then DoCmd.SetWarnings False CurrentDb.Execute "INSERT INTO Planning ( IDContrat, Enfant, Garde, Groupe, Place, AffectéA, SaisiPar, DateCréation, Jour ) SELECT " & Num_Contrat & " AS Num_Contrat, " & Nom_Enfant & " AS Nom_Enfant, " & Nom_Garde & " AS Nom_Garde, " & Num_Groupe & " AS Num_Groupe, " & Nb_Place & " AS Nb_Place, " & Nom_Employe & " AS Nom_Employe, " & Nom_Utilisateur & " AS Nom_Utilisateur, #" & Format(DateCréation, "mm-dd-yyyy") & " # AS Date_Saisi, #" & Format(DateC, "mm-dd-yyyy") & "# AS Jour;" DoCmd.SetWarnings True End If Next MsgBox ("Les gardes ont été ajoutés sur le planning selon les dates indiquées") DoCmd.Close Case vbNo: Me.Undo ' Non : On annule les changements... DoCmd.Close ' ... et on ferme Case vbCancel: ' Rien ne se passe : On reste dans le formulaire End Select End Sub
En mettant les champs de type texte entre quote simple, je n'ai plus de message d'erreur; néanmoins, aucune ligne n'est créé à la fin ...
Code : Sélectionner tout - Visualiser dans une fenêtre à part " & Nom_Garde & " AS ' Nom_Garde ', " & Num_Groupe & " AS ' Num_Groupe ', " & Nb_Place & " AS ' Nb_Place ',
Les champs de type texte en simple quote, n'est pas le souci. De plus ce ne sont pas des champs mais des alias de champs qui, je le répète, ne servent à rien dans un SQL exécuté en VBA. Ne rien mettre, au contraire, allège plutôt la lecture.
Par contre si rien ne s'ajoute, il faut vérifier que le SQL est correct.
Remet le mode déboguage en remplaçant :
par :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 DoCmd.SetWarnings False CurrentDb.Execute "INSERT INTO Planning ( IDContrat, Enfant, Garde, Groupe, Place, AffectéA, SaisiPar, DateCréation, Jour ) SELECT " & Num_Contrat & " AS Num_Contrat, " & Nom_Enfant & " AS Nom_Enfant, " & Nom_Garde & " AS Nom_Garde, " & Num_Groupe & " AS Num_Groupe, " & Nb_Place & " AS Nb_Place, " & Nom_Employe & " AS Nom_Employe, " & Nom_Utilisateur & " AS Nom_Utilisateur, #" & Format(DateCréation, "mm-dd-yyyy") & " # AS Date_Saisi, #" & Format(DateC, "mm-dd-yyyy") & "# AS Jour;" DoCmd.SetWarnings True
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 Dim stSQL As String stSQL = "INSERT INTO Planning ( IDContrat, Enfant, Garde, Groupe, Place, AffectéA, SaisiPar, DateCréation, Jour ) SELECT " & Num_Contrat & " AS Num_Contrat, " & Nom_Enfant & " AS Nom_Enfant, " & Nom_Garde & " AS Nom_Garde, " & Num_Groupe & " AS Num_Groupe, " & Nb_Place & " AS Nb_Place, " & Nom_Employe & " AS Nom_Employe, " & Nom_Utilisateur & " AS Nom_Utilisateur, #" & Format(DateCréation, 'mm-dd-yyyy') & " # AS Date_Saisi, #" & Format(DateC, 'mm-dd-yyyy') & "# AS Jour;" Debug.Print stSQL ' Pour imprimer l'instruction SQL DoCmd.SetWarnings True ' Pour afficher les messages d'erreur CurrentDb.Execute stSQL
Quand on est derrière l'écran on n'a aucun clavier sous les mains ...
ah non ? donc devant l'écran c'est la connectique ?
J'ai un message d'erreur : Erreur de syntaxe
Le code fonctionne très bien avec les 3 premiers champs, une fois je modifie, j'ai un message d'erreur ...
Et qu'est-ce qu'il y a dans la fenêtre d'exécution avec Debug ? Si il y a erreur de syntaxe ce serait bien de l'afficher aussi.
Quand on est derrière l'écran on n'a aucun clavier sous les mains ...
ah non ? donc devant l'écran c'est la connectique ?
La solution a été trouvé grâce à l'aide de tee_grandbois ...
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager