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 04/07/2011, 16h58   #1
Invité de passage
 
Inscription : juillet 2009
Messages : 21
Détails du profil
Informations forums :
Inscription : juillet 2009
Messages : 21
Points : 1
Points : 1
Par défaut Problème SQL en VBA

Bonjour à tous,

Malgrès quelques recherche, je n'arrive pas à trouver la solution à mon problème.

Je souhaite récuperer le resultat (un chiffre) d'une requete SQL en VBA.
Est-ce possible?

Voici le seul code que j'ai trouvé pour l'instant
Code :
1
2
3
4
5
6
7
8
 
  Dim db As DAO.Database
  Dim qdf As DAO.QueryDef
 
  Set db = CurrentDb
    sSQL = "Select CLIENT.PRODUIT_ID From CLIENT Where COMMANDE_ID= Me.COMMANDE_ID"
 
      Set rst = db.OpenRecordset(sSQL, dbOpenForwardOnly, dbReadOnly)
Je ne vois pas trop l’intérêt des RecordSet. Ne peut ont pas simplement récupérer le résultat (un chiffre) , d'une requête SQL?
Si non, comment récupérer à partir d'un RecordSet?

Merci d'avance

Selverine
selverine est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/07/2011, 17h12   #2
Rédacteur/Modérateur
 
Avatar de GAYOT
 
Homme Jean-Damien GAYOT
Inscription : novembre 2004
Messages : 2 074
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 074
Points : 4 381
Points : 4 381
Envoyer un message via Skype™ à GAYOT
Bonjour
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
 Dim db As DAO.Database
  Dim rst As DAO.Recordset  
  Dim sSQl As String
  Dim Result as Variant ( Je ne sais pas de quel type est le champ)
 
  Set db = CurrentDb
    sSQL = "Select CLIENT.PRODUIT_ID From CLIENT Where COMMANDE_ID= Me.COMMANDE_ID" 
    Set rst = db.OpenRecordset(sSQL, dbOpenSnapshot)
 
    If Not Orst.EOF Then
       Result = Nz(rst.Fields(0), "")
    Else
       MsgBox "Il n'y a pas d'enregistrement"
    End if
Cela c'est si tu es sûr de n'avoir qu'un enregistrement.

Attention de bien fermer la connexion en fin de procédure et de libérer les variables.
__________________
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 05/07/2011, 09h19   #3
Membre Expert
 
Inscription : janvier 2006
Messages : 1 111
Détails du profil
Informations forums :
Inscription : janvier 2006
Messages : 1 111
Points : 1 093
Points : 1 093
Bonjour,

Dans ce cas précis, un DLookup peut suffire :
Code :
1
2
Dim iLng_ProductId as long
    iLng_ProductId= DLookup("PRODUIT_ID", "CLIENT", "COMMANDE_ID = " & Me.COMMANDE_ID.value)
__________________
[Access] Les bases du débogage => ici
Kloun est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/07/2011, 10h42   #4
Invité de passage
 
Inscription : juillet 2009
Messages : 21
Détails du profil
Informations forums :
Inscription : juillet 2009
Messages : 21
Points : 1
Points : 1
Merci pour tout!

J'ai pas encore testé la solution de Kloun , mais celle de GAYOT fonctionne (par contre comme Me.COMMANDE_ID est une variable il faut écrire

"Select CLIENT.PRODUIT_ID From CLIENT Where COMMANDE_ID= " & Me.COMMANDE_ID".

Je teste ce soir la solution de klou!

Enfaite, je sais pas si c 'est possible, mais peut on retourner un tableau dans une fonction en VBA?

Merci!
selverine 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 23h19.


 
 
 
 
Partenaires

Hébergement Web