Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Access > VBA Access
VBA Access Le forum pour les questions relatives au code VBA sous Access, et à son environnement de développement VBE.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 03/11/2011, 08h55   #1
Invité de passage
 
Inscription : novembre 2011
Messages : 6
Détails du profil
Informations forums :
Inscription : novembre 2011
Messages : 6
Points : 1
Points : 1
Par défaut Requete SQL paramétrée

Bonjouor à tous!!!

Utilisateur de longue date d'Access, je me lance dans le VBA et je cherche à paramétrer une requête SQL, solution plus propre que faire x lignes de programmation quasi identiques.

Voilà le "souci" :
J'ai dans ma table Pot 5 champs Cod_POTENT (Cod_POTENT1; Cod_POTENT2; Cod_POTENT3; Cod_POTENT4; Cod_POTENT5)
J'ai donc pensé à faire une boucle de 1 à 5 pour alléger le code mais je coince sur la concaténation...

Si quelqu'un a une petite idée qui me permettrait de poursuivre...

Sincèrement

Code :
1
2
3
4
5
6
Dim numcode As Integer
 
For numcode  = 1 To 5
 
    DoCmd.RunSQL ("SELECT Pot.CodA_POTENT" &numcode& "FROM Pot GROUP BY Pot_Oct11.CodA_POTENT" &numcode;")  
Next
Nimitz4145 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/11/2011, 14h12   #2
Rédacteur/Modérateur

 
Avatar de loufab
 
Homme Fabrice CONSTANS
Ingénieur développement logiciels
Inscription : avril 2005
Messages : 7 089
Détails du profil
Informations personnelles :
Nom : Homme Fabrice CONSTANS
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Ingénieur développement logiciels

Informations forums :
Inscription : avril 2005
Messages : 7 089
Points : 11 624
Points : 11 624
Bonjour,
Penses-tu que cette syntaxe SQL soit correcte .

Code :
1
2
3
SELECT Pot.CodA_POTENT1FROM ....
SELECT Pot.CodA_POTENT2FROM ....
etc
et puis

Code :
POTENT" & numcode & " ;")
Il y a un tuto sur le débogage des requetes sql en VBA. C'est le moment de lire un peu.

Cordialement,
__________________
Classe MELA(CRUD) Opérateur IN et zone de liste
MsGraph et VBA - 1e Partie 2e partie
Entête d'états-Opérateur LIKE-Evénements formulaires-Cours 2010
Complément :Générateur de msgbox
Visitez mon Blog
Les questions techniques par MP ne sont pas lues et je ne pratique pas l'extispicine
loufab est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/11/2011, 13h14   #3
Invité de passage
 
Inscription : novembre 2011
Messages : 6
Détails du profil
Informations forums :
Inscription : novembre 2011
Messages : 6
Points : 1
Points : 1
Citation:
Envoyé par loufab Voir le message
Il y a un tuto sur le débogage des requetes sql en VBA. C'est le moment de lire un peu.

Cordialement,
Effectivement, une très saine lecture.
J'ai bien avancé mais je bloque sur une dernière commande :
Le DoCmd.RunSQL me renvoie "Erreur 3450. Erreur de syntaxe dans la requête.La clause de la requête est incomplète"

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
Dim mabd As Database
Dim mrs As Recordset
Dim mrsG As Recordset
 
Set mabd = CurrentDb
'creation du recorset
Dim lib As String
 
Set mrsG = mabd.OpenRecordset("SELECT * from Codes ")
        Do Until mrsG.EOF()
        lib = mrsG!libellé.Value
 
                DoCmd.CopyObject , lib, acTable, "source"
 
                DoCmd.RunSQL ("INSERT INTO '" & lib & "' ( Fregate ) SELECT Client_Fregate FROM Pot_Oct11 WHERE (((Pot_Oct11.LibA_POTENT1)='" & lib & "')) ;")
                'Je souhaite utiliser la variable lib pour ajouter les enregistrements de la 
                'table Pot_Oct dont le libelléA = lib via une requête ajout à la table lib que 
                'je viens de créer par le copyobject.
                'Tout marche sauf cette ligne de code...               
 
                mrsG.MoveNext
        Loop
 'fermeture recorset
 mrsG.Close
Nimitz4145 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/11/2011, 01h37   #4
Rédacteur/Modérateur

 
Avatar de loufab
 
Homme Fabrice CONSTANS
Ingénieur développement logiciels
Inscription : avril 2005
Messages : 7 089
Détails du profil
Informations personnelles :
Nom : Homme Fabrice CONSTANS
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Ingénieur développement logiciels

Informations forums :
Inscription : avril 2005
Messages : 7 089
Points : 11 624
Points : 11 624
Bonjour,
je ne pense pas qu'il faille des cotes pour le nom de la table.

Code :
1
2
3
4
INSERT INTO table (champ1, champ2)
SELECT champ1, champ2
FROM table2
WHERE condition
Consulte les syntaxes des instructions sql dans l'aide Access.
Au besoin construit ta requete dans le QBE puis adapte-la à vba.
__________________
Classe MELA(CRUD) Opérateur IN et zone de liste
MsGraph et VBA - 1e Partie 2e partie
Entête d'états-Opérateur LIKE-Evénements formulaires-Cours 2010
Complément :Générateur de msgbox
Visitez mon Blog
Les questions techniques par MP ne sont pas lues et je ne pratique pas l'extispicine
loufab est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/11/2011, 08h07   #5
Invité de passage
 
Inscription : novembre 2011
Messages : 6
Détails du profil
Informations forums :
Inscription : novembre 2011
Messages : 6
Points : 1
Points : 1
Citation:
Envoyé par loufab Voir le message
Bonjour,
je ne pense pas qu'il faille des cotes pour le nom de la table.

Code :
1
2
3
4
INSERT INTO table (champ1, champ2)
SELECT champ1, champ2
FROM table2
WHERE condition
Consulte les syntaxes des instructions sql dans l'aide Access.
Au besoin construit ta requete dans le QBE puis adapte-la à vba.
En fait, c'est plus vicieux que ça!!!
Je viens de trouver au saut du lit!!
Comme ma table possède un espace dans le nom, il fallait mettre
"INSERT INTO [" & lib & "]" etc....

Quoi qu'il en soit, merci pour ta réponse!!
Nimitz4145 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 13h00.


 
 
 
 
Partenaires

Hébergement Web