[vba] Problème de boucle
Résolu/Fermé
mat67000
Messages postés
401
Date d'inscription
mercredi 14 mars 2007
Statut
Membre
Dernière intervention
10 décembre 2019
-
19 juin 2007 à 11:03
blux Messages postés 26151 Date d'inscription dimanche 26 août 2001 Statut Modérateur Dernière intervention 27 juin 2024 - 19 juin 2007 à 16:05
blux Messages postés 26151 Date d'inscription dimanche 26 août 2001 Statut Modérateur Dernière intervention 27 juin 2024 - 19 juin 2007 à 16:05
A voir également:
- [vba] Problème de boucle
- Vba ouvrir un fichier excel avec chemin ✓ - Forum VB / VBA
- Vba attendre 1 seconde ✓ - Forum VB / VBA
- Vba dernière colonne non vide ✓ - Forum VB / VBA
- Redmi note 10 redemarre en boucle - Forum Xiaomi
15 réponses
blux
Messages postés
26151
Date d'inscription
dimanche 26 août 2001
Statut
Modérateur
Dernière intervention
27 juin 2024
3 293
19 juin 2007 à 11:09
19 juin 2007 à 11:09
Salut,
tu exécutes ta requête quand ?
tu exécutes ta requête quand ?
mat67000
Messages postés
401
Date d'inscription
mercredi 14 mars 2007
Statut
Membre
Dernière intervention
10 décembre 2019
13
19 juin 2007 à 11:25
19 juin 2007 à 11:25
J'exécute la requete sur l'evenement Private Sub Bouton_enrgt_Click()
Les MsgBox de controles montrent la bonne exécution de la requete mais aucun effet dans la table T_PORT
Les MsgBox de controles montrent la bonne exécution de la requete mais aucun effet dans la table T_PORT
blux
Messages postés
26151
Date d'inscription
dimanche 26 août 2001
Statut
Modérateur
Dernière intervention
27 juin 2024
3 293
19 juin 2007 à 13:22
19 juin 2007 à 13:22
Donne le code de Bouton_enrgt_Click()
mat67000
Messages postés
401
Date d'inscription
mercredi 14 mars 2007
Statut
Membre
Dernière intervention
10 décembre 2019
13
19 juin 2007 à 13:42
19 juin 2007 à 13:42
Private Sub Commande26_Click() On Error GoTo Err_Commande26_Click DoCmd.DoMenuItem acFormBar, acRecordsMenu, acSaveRecord, , acMenuVer70 Dim count count = 0 Do While count <= Me.Nombre_de_ports.Value Dim essai Dim essai2 essai = "INSERT INTO T_PORT (N°Switch) VALUES ('" essai = essai & N°_Switch.Value & "');" MsgBox essai essai2 = "INSERT INTO T_PORT (Port) VALUES ('" essai2 = essai2 & count & "');" MsgBox essai2 count = count + 1 Loop End Exit_Commande26_Click: Exit Sub Err_Commande26_Click: MsgBox Err.Description Resume Exit_Commande26_Click End Sub
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
blux
Messages postés
26151
Date d'inscription
dimanche 26 août 2001
Statut
Modérateur
Dernière intervention
27 juin 2024
3 293
19 juin 2007 à 13:47
19 juin 2007 à 13:47
Donc, j'insiste, à aucun moment tu n'exécutes une requête, tu te contentes de mettre un texte de requête dans deux variables essai et essai2, si ensuite tu fais un docmd runsql, alors-là, ça peut changer...:-)
mat67000
Messages postés
401
Date d'inscription
mercredi 14 mars 2007
Statut
Membre
Dernière intervention
10 décembre 2019
13
19 juin 2007 à 14:02
19 juin 2007 à 14:02
J'ai testé avec runsql mais des erreurs sont générés. Désolé mais ça fait quelques temps que je ne suis plus dans le bain ^^
Private Sub Commande26_Click() On Error GoTo Err_Commande26_Click DoCmd.DoMenuItem acFormBar, acRecordsMenu, acSaveRecord, , acMenuVer70 Dim count count = 0 Do While count <= Me.Nombre_de_ports.Value DoCmd.RunSQL "INSERT INTO T_PORT (N°Switch) VALUES ('" & N°_Switch.Value & "')" DoCmd.RunSQL "INSERT INTO T_PORT (Port) VALUES ('" & count & "')" count = count + 1 Loop End Exit_Commande26_Click: Exit Sub Err_Commande26_Click: MsgBox Err.Description Resume Exit_Commande26_Click End Sub
blux
Messages postés
26151
Date d'inscription
dimanche 26 août 2001
Statut
Modérateur
Dernière intervention
27 juin 2024
3 293
19 juin 2007 à 14:05
19 juin 2007 à 14:05
c'est quoi les erreurs, j'ai du mal à deviner, même si je pense à un pb de "...
mat67000
Messages postés
401
Date d'inscription
mercredi 14 mars 2007
Statut
Membre
Dernière intervention
10 décembre 2019
13
19 juin 2007 à 14:09
19 juin 2007 à 14:09
Ici => http://hebergement-images.voiloo.net/membres/viewimg.php?img=d0d86495b9fe1052cf8c9c6a7fea0b27.jpg
et j'ai cette erreur une trentaine de fois ^^
et j'ai cette erreur une trentaine de fois ^^
blux
Messages postés
26151
Date d'inscription
dimanche 26 août 2001
Statut
Modérateur
Dernière intervention
27 juin 2024
3 293
19 juin 2007 à 14:18
19 juin 2007 à 14:18
DoCmd.RunSQL "INSERT INTO T_PORT (N°Switch) VALUES ('" & N°_Switch.Value & "')"
une fois que tu l'as créé, la deuxième fois, ça va pas le faire... il faut le sortir de ta boucle qui ne crée que les ports, mais il faut cibler le switch à créer... donc en fait, faire des deux requêtes une seule :
DoCmd.RunSQL "INSERT INTO T_PORT (N°Switch, port) VALUES ('" & N°_Switch.Value & ";" & count & ")"
ou un truc comme ça, j'ai pas testé...
fais attention, le mot-clé count existe en VBA...
une fois que tu l'as créé, la deuxième fois, ça va pas le faire... il faut le sortir de ta boucle qui ne crée que les ports, mais il faut cibler le switch à créer... donc en fait, faire des deux requêtes une seule :
DoCmd.RunSQL "INSERT INTO T_PORT (N°Switch, port) VALUES ('" & N°_Switch.Value & ";" & count & ")"
ou un truc comme ça, j'ai pas testé...
fais attention, le mot-clé count existe en VBA...
mat67000
Messages postés
401
Date d'inscription
mercredi 14 mars 2007
Statut
Membre
Dernière intervention
10 décembre 2019
13
19 juin 2007 à 14:28
19 juin 2007 à 14:28
J'ai testé ceci :
je n'ai pas sorti la requete de la boucle, tout simplement parce que je ne vois pas comment faire comprendre à la requete de créer les ports en fonction de l'instruction de la boucle !!
Dim cpte cpte = 0 Do While cpte <= Me.Nombre_de_ports.Value DoCmd.RunSQL "INSERT INTO T_PORT (N°Switch, port) VALUES ('" & N°_Switch.Value & ";" & cpte & "')" cpte = cpte + 1 Loop End
je n'ai pas sorti la requete de la boucle, tout simplement parce que je ne vois pas comment faire comprendre à la requete de créer les ports en fonction de l'instruction de la boucle !!
blux
Messages postés
26151
Date d'inscription
dimanche 26 août 2001
Statut
Modérateur
Dernière intervention
27 juin 2024
3 293
19 juin 2007 à 14:32
19 juin 2007 à 14:32
je t'ai dit qu'il ne fallait créer qu'un seul switch, donc le sortir de la boucle, mais ça ne résoud pas tout le problème, c'est pour ça que finalement j'ai dit qu'il fallait cibler le switch dans lequel on ajoute des ports, donc faire ce que tu as fait...
ça marche mieux ?
ça marche mieux ?
mat67000
Messages postés
401
Date d'inscription
mercredi 14 mars 2007
Statut
Membre
Dernière intervention
10 décembre 2019
13
19 juin 2007 à 14:56
19 juin 2007 à 14:56
J'ai essayé ceci :
je sais pas si c'est exactement ce que tu voulais dire, mais là Access me met qu'il attend un pt-virgule à la fin de l'instruction SQL alors qu'il y est ^^
Dim Sw Sw = Me.N°_Switch.Value MsgBox Sw Dim cpte cpte = 0 Do While cpte <= Me.Nombre_de_ports.Value DoCmd.RunSQL "INSERT INTO T_PORT (Port) VALUES ('" & cpte & "') WHERE [N°Switch.Value] = " & Sw & ";" cpte = cpte + 1 Loop End
je sais pas si c'est exactement ce que tu voulais dire, mais là Access me met qu'il attend un pt-virgule à la fin de l'instruction SQL alors qu'il y est ^^
blux
Messages postés
26151
Date d'inscription
dimanche 26 août 2001
Statut
Modérateur
Dernière intervention
27 juin 2024
3 293
19 juin 2007 à 15:01
19 juin 2007 à 15:01
Ca peut le faire, mais mets ta requête dans une chaine avant de l'exécuter, je suis sûr qu'il n'aime pas les " comme délimiteurs de la commande et délimiteurs de ta requête en même temps...
mat67000
Messages postés
401
Date d'inscription
mercredi 14 mars 2007
Statut
Membre
Dernière intervention
10 décembre 2019
13
19 juin 2007 à 15:04
19 juin 2007 à 15:04
mets ta requête dans une chaine avant de l'exécuter
C'est-à-dire ??
Et pourquoi me dit-il qu'il manque le ; à la fin de l'instruction SQL alors qu'il y est ??
C'est-à-dire ??
Et pourquoi me dit-il qu'il manque le ; à la fin de l'instruction SQL alors qu'il y est ??
blux
Messages postés
26151
Date d'inscription
dimanche 26 août 2001
Statut
Modérateur
Dernière intervention
27 juin 2024
3 293
19 juin 2007 à 16:05
19 juin 2007 à 16:05
Dim StrSql as String StrSql = "INSERT INTO T_PORT (Port) VALUES " StrSql = StrSql & "('" & cpte & "') WHERE [N°Switch.Value] = " Strsql = StrSql & Sw & ";" DoCmd RunSql (StrSql)Et pourquoi me dit-il qu'il manque le ; à la fin de l'instruction SQL alors qu'il y est ??
Sûrement pour les raisons expliquées plus haut, la commande Runsql a ses attributs délimités par des " l'attribut de la comande est lui-même avec des ", je pense qu'il ne doit pas aimer...