Création de table à partir d'une requête sélection SQL en vb
Résolu
BiankaBo
Messages postés
68
Date d'inscription
lundi 16 avril 2018
Statut
Membre
Dernière intervention
24 septembre 2024
-
16 juil. 2024 à 16:56
yg_be Messages postés 23535 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 27 avril 2025 - 11 sept. 2024 à 21:57
yg_be Messages postés 23535 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 27 avril 2025 - 11 sept. 2024 à 21:57
A voir également:
- L'indice n'appartient pas à la sélection access
- L'indice n'appartient pas à la sélection vba - Forum VB / VBA
- Erreur d'execution 9, l'indice n'appartient pas à la sélection ✓ - Forum Programmation
- L'indice n'appartient pas à la selection ✓ - Forum VB / VBA
- Erreur '9' l'indice n'appartient pas à la sélection - Forum VB / VBA
- A qui appartient ce numéro - Guide
12 réponses
BoBot
Messages postés
5581
Date d'inscription
mardi 4 juillet 2023
Statut
Modérateur
Dernière intervention
2 mai 2025
340
17 juil. 2024 à 19:50
17 juil. 2024 à 19:50
Bonjour !
C'est moi, Bobot, votre IA préférée !
D'après ce que je comprends de votre code, il semble que la requête que vous exécutez requiert 5 paramètres, comme indiqué par l'erreur. Ces paramètres doivent être inclus lorsque vous exécutez la requête. Pour résoudre le problème, vous pouvez ajouter des paramètres à votre requête. Voici un exemple de la façon dont vous pouvez le faire :
'Créez un objet QueryDef pour votre requête
Set qdef = db.QueryDefs("nom_de_votre_requete")
'Assignez des valeurs à vos paramètres
qdef.Parameters(0).Value = valeur_param1
qdef.Parameters(1).Value = valeur_param2
qdef.Parameters(2).Value = valeur_param3
qdef.Parameters(3).Value = valeur_param4
qdef.Parameters(4).Value = valeur_param5
'Exécutez la requête
Set rst = qdef.OpenRecordset()
Cela devrait vous permettre d'exécuter votre requête sans générer d'erreur. Assurez-vous que les valeurs que vous passez à la requête sont correctes et qu'elles sont dans le bon ordre.
C'est moi, Bobot, votre IA préférée !
D'après ce que je comprends de votre code, il semble que la requête que vous exécutez requiert 5 paramètres, comme indiqué par l'erreur. Ces paramètres doivent être inclus lorsque vous exécutez la requête. Pour résoudre le problème, vous pouvez ajouter des paramètres à votre requête. Voici un exemple de la façon dont vous pouvez le faire :
'Créez un objet QueryDef pour votre requête
Set qdef = db.QueryDefs("nom_de_votre_requete")
'Assignez des valeurs à vos paramètres
qdef.Parameters(0).Value = valeur_param1
qdef.Parameters(1).Value = valeur_param2
qdef.Parameters(2).Value = valeur_param3
qdef.Parameters(3).Value = valeur_param4
qdef.Parameters(4).Value = valeur_param5
'Exécutez la requête
Set rst = qdef.OpenRecordset()
Cela devrait vous permettre d'exécuter votre requête sans générer d'erreur. Assurez-vous que les valeurs que vous passez à la requête sont correctes et qu'elles sont dans le bon ordre.
17 juil. 2024 à 21:21
Bonjour BoBot,
Merci beaucoup pour votre réponse.
Je suis tout de même un peu perdue malheureusement. Je dois faire une boucle pour parcourir tous les enregistrements de ma requête un à un pour les ajouter graduellement à ma table de données, mais je ne peux pas atteindre le premier enregistrement avec
qdef.MoveFirst
et je ne peux pas non plus faire une Loop en utilisant
With qdef Do Until .EOF
Je n'arrive pas à comprendre à quoi servent les paramètres non plus. Voici ce que j'ai fais en essayant d'ajouter vos recommandations:
Dim db As DAO.Database Dim qdef As DAO.QueryDef Dim rst As DAO.Recordset Set db = CurrentDb Set qdef = db.QueryDefs("06-01_AVANTGARDE_SOLDE_ANN_DEM_RECH") qdef.MoveFirst With qdef Do Until .EOF 'Récupérer les valeurs de l'enregistrement strRechRef = .Fields("FICHE") strRechNom = .Fields("NOM") strRechPNom = .Fields("PNOM") strRechAnn = .Fields("ANNEE") MonSolde = .Fields("SommeDeSOLDE") DecSolde = Replace(MonSolde, ",", ".") 'Assigner les valeurs des paramètres qdef.Parameters(0).Value = strRechRef qdef.Parameters(1).Value = strRechNom qdef.Parameters(2).Value = strRechPNom qdef.Parameters(3).Value = strRechAnn qdef.Parameters(4).Value = DecSolde Set rst = qdef.OpenRecordset("INSERT INTO " & strNTbl & " (SelCreance,RefSyst,NClient,PNClient,Ann,Sold)" _ & " VALUES (0,'" & qdef.Parameters(0).Value & "','" & qdef.Parameters(1).Value & "','" & qdef.Parameters(2).Value & "'," & qdef.Parameters(3).Value & "," & qdef.Parameters(4).Value & ");") .MoveNext Loop End With
Je ne sais pas si les paramètres sont bien utilisés, car je bloque tout de suite à qdef.MoveFisrt..
Merci beaucoup! :)