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 13/11/2011, 11h42   #1
Candidat au titre de Membre du Club
 
Homme Bertrand
Inscription : octobre 2011
Messages : 47
Détails du profil
Informations personnelles :
Nom : Homme Bertrand
Localisation : France, Pas de Calais (Nord Pas de Calais)

Informations professionnelles :
Secteur : Industrie

Informations forums :
Inscription : octobre 2011
Messages : 47
Points : 14
Points : 14
Par défaut Syntaxe de requête dans un Recordset

Bonjour,
Grâce aux excellent tutoriaux glanés sur ce site, j'aimerais utiliser les Recordset pour exécuter des requêtes d'ajout, ... en SQL
par contre, j'ai un pb de syntaxe sur lequel je bloque depuis un bon moment :

------ Ce code me retourne bien ce que j'attends :
Code :
1
2
3
4
5
Dim oRst As DAO.Recordset
Dim oDb As DAO.Database
Set oDb = CurrentDb
 
Set oRst = oDb.OpenRecordset("SELECT PAY_ID, PAY_LIB FROM TE_PAYS_PAY WHERE PAY_ID=77", dbOpenDynaset)
----- Par contre celui ci bloque :
Code :
1
2
3
4
5
6
Dim oRst As DAO.Recordset
Dim oDb As DAO.Database
Dim Monpays As Integer
Set oDb = CurrentDb
Monpays = 77
Set oRst = oDb.OpenRecordset("SELECT PAY_ID, PAY_LIB FROM TE_PAYS_PAY WHERE PAY_ID=Monpays", dbOpenDynaset)
Par avance merci et bonne fin de journée
Bertrand
105rn2 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/11/2011, 12h23   #2
Rédacteur/Modérateur
 
Avatar de GAYOT
 
Homme Jean-Damien GAYOT
Inscription : novembre 2004
Messages : 2 075
Détails du profil
Informations personnelles :
Nom : Homme Jean-Damien GAYOT
Âge : 56
Localisation : France, Meuse (Lorraine)

Informations professionnelles :
Secteur : Distribution

Informations forums :
Inscription : novembre 2004
Messages : 2 075
Points : 4 385
Points : 4 385
Envoyer un message via Skype™ à GAYOT
Bonjour
De quel format est "Pays_Id" ?
__________________
Plus j'avance et plus j'ai l'impression de ne rien savoir. Et comme j'essaie d'aller loin..!!.

Tutoriels sur:http://jdgayot.developpez.com

Pas de sujets techniques par Mp. Sinon
GAYOT est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/11/2011, 12h57   #3
Expert Confirmé
 
Avatar de vodiem
 
Homme Diem VO
Vivre
Inscription : avril 2006
Messages : 2 644
Détails du profil
Informations personnelles :
Nom : Homme Diem VO
Âge : 40
Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

Informations professionnelles :
Activité : Vivre
Secteur : Conseil

Informations forums :
Inscription : avril 2006
Messages : 2 644
Points : 3 895
Points : 3 895
Salut GAYOT et bienvenu 105rn2,

outre qu'il faudrait plutot écrire: (ou doubler les guillemets à la place de chaque apostrophe)
Code SQL :
WHERE PAY_ID='Monpays'
il est fort probable que le type de PAY_ID ne correspond pas.
tu peux utiliser un DLookUp() éventuellement dans ce cas.

vodiem est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/11/2011, 16h37   #4
Candidat au titre de Membre du Club
 
Homme Bertrand
Inscription : octobre 2011
Messages : 47
Détails du profil
Informations personnelles :
Nom : Homme Bertrand
Localisation : France, Pas de Calais (Nord Pas de Calais)

Informations professionnelles :
Secteur : Industrie

Informations forums :
Inscription : octobre 2011
Messages : 47
Points : 14
Points : 14
Re bonjour,
PAY_ID est le N° auto qui sert de clé de la table TE_PAYS_PAY
Je voudrais trouver la syntaxe correcte pour faire s’exécuter des requêtes un peu plus compliquée (dupli de lignes,...) c'est pourquoi j'essaie de passer par un recordset (et pas dlookup)

Ayant maintenant un doute sur la compatibilité MonPays et PAY_ID, j'ai essayé
Code :
Set oRst = oDb.OpenRecordset("SELECT PAY_ID, PAY_LIB FROM TE_PAYS_PAY WHERE PAY_ID= max(PAY_ID)", dbOpenDynaset)
J'espérais ainsi trouver le dernier enregistrement, mais là aussi ça bloque

Je pense qu'effectivement il faut mettre des ' ou des "" ou des ( quelque part mais je n'ai pas trouvé la combinaison gagnante

Par avance merci de votre aide
Bertrand
105rn2 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/11/2011, 16h47   #5
Rédacteur/Modérateur
 
Avatar de Philippe JOCHMANS
 
Homme Philippe JOCHMANS
Développeur informatique
Inscription : mai 2005
Messages : 17 620
Détails du profil
Informations personnelles :
Nom : Homme Philippe JOCHMANS
Âge : 44
Localisation : France, Loir et Cher (Centre)

Informations professionnelles :
Activité : Développeur informatique
Secteur : Communication - Médias

Informations forums :
Inscription : mai 2005
Messages : 17 620
Points : 30 945
Points : 30 945
Envoyer un message via MSN à Philippe JOCHMANS Envoyer un message via Skype™ à Philippe JOCHMANS
Bonjour

MonPays étant une variable il faut le sortir de la chaîne SQL et le rajouter :

Code :
Set oRst = oDb.OpenRecordset("SELECT PAY_ID, PAY_LIB FROM TE_PAYS_PAY WHERE PAY_ID=" & Monpays & ";", dbOpenDynaset)
Philippe
__________________
Détaillez vos questions, sinon vous aurez des réponses erronées et vous irez tout droit dans le et lisez les règles sinon
Si vous pensez commencer sans un livre, oublier : livres pour débuter
Vous pouvez consulter mes articles sur Access et PowerPoint
Le blog Office.

Inutile de m'envoyer un MP pour des questions techniques ou de me relancer , je n'y répondrais pas.
Philippe JOCHMANS est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/11/2011, 17h26   #6
Candidat au titre de Membre du Club
 
Homme Bertrand
Inscription : octobre 2011
Messages : 47
Détails du profil
Informations personnelles :
Nom : Homme Bertrand
Localisation : France, Pas de Calais (Nord Pas de Calais)

Informations professionnelles :
Secteur : Industrie

Informations forums :
Inscription : octobre 2011
Messages : 47
Points : 14
Points : 14
Re
Merci beaucoup, ça marche beaucoup mieux comme cela !
(mais cela ne s'invente pas vraiment :-)
Et au risque d'abuser, est ce qu'on peut faire des requêtes imbriquées ?

Comment écrirait t on ce code extrait de l'excellent tutorial de sqlpro ?
Code sql :
1
2
3
4
5
6
INSERT INTO   T_CLIENT (CLI_ID, 
                        TIT_CODE,       CLI_NOM, CLI_PRENOM)
        SELECT PRP_ID + (SELECT MAX(CLI_ID) 
                         FROM T_CLIENT),
                         PRP_CODE_TITRE, PRP_NOM, PRP_PRENOM
        FROM   T_PROSPECT

peux t on garder une présentation indentée, et comment traduire le retour à la ligne ?

Merci encore, ça m'ouvre beaucoup de possibilités !
Bonne soirée
105rn2 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 07h02.


 
 
 
 
Partenaires

Hébergement Web