IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VBA Access Discussion :

Récupérer résultat requete SQL [AC-2010]


Sujet :

VBA Access

  1. #1
    Nouveau membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Mars 2012
    Messages
    71
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2012
    Messages : 71
    Points : 34
    Points
    34
    Par défaut Récupérer résultat requete SQL
    Bonjour,

    Je ne suis pas forte en vba, et là je galère depuis plusieurs jours...

    J'ai une requête SQL qui me retourne le mois de mon fichier en fonction de chiffres que je trouve dans ma table. J'aimerais récupérer ce string, et pouvoir l'utiliser après. (notamment copier ma table d'origine, et la renommer avec le mois trouvé).

    Voilà mon code VB :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Dim Str As String
    Dim rq As Recordset
    Dim rslt As Currency
     
    Str = "SELECT distinct max(IIf([Cost ($)7],'Dec',IIf([Cost ($)6],'Nov',''))) "
    Str = Str + "FROM Table1 "
    Set rq = CurrentDb.OpenRecordset(Str)
    rslt = rq.MoveFirst
     
    MsgBox (rslt)
    J'ai une erreur "Compile error : Expected Function or variable"

    Si quelqu'un à une idée...

    Merci de votre aide.

  2. #2
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 368
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 368
    Points : 23 840
    Points
    23 840
    Par défaut
    Ton problème vient de là.

    Tu essayes d'affecter à une variable un déplacement dans ta source de données.

    Je pense que tu voulais récupérer la valeur d'un de champs donc je sugère :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Dim Str As String
    Dim rq As Recordset
    Dim rslt As Currency
     
    Str = "SELECT distinct max(IIf([Cost ($)7],'Dec',IIf([Cost ($)6],'Nov',''))) as Resultat "
    Str = Str + "FROM Table1 "
    Set rq = CurrentDb.OpenRecordset(Str)
    rslt = rq![Resultat] 'Note, ici on peut aussi éctire rq.fields("Reusltat")
     
    MsgBox (rslt)
    Et je ne suis pas certain que ta syntaxe SQL est correct en SQL Access. Je ferai un test dans l'éditeur de requête une fois que j'aurai obtenu le résultat attendu puis j'afficherai le code SQL correspdant.

    Une autre méthode consite à utiliser directement l'objet Requête comme source de donneés.

    Ton code devient alors :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    Dim rq As DAO.Recordset
    Dim rslt As Currency
    dim db as dao.database:set db=currentdb
     
    Set rq = CurrentDb.OpenRecordset("NomTaRequeteSource")
    rslt = rq![Resultat] 'Note, ici on peut aussi éctire rq.fields("Resultat")
     
    MsgBox (rslt)
     
    rq.close:set rq=nothing 'Ferme le recordset et libère la mémoire utilisée.
    set db=nothhing 'Libère la mémoire utilisée.
    A+

  3. #3
    Nouveau membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Mars 2012
    Messages
    71
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2012
    Messages : 71
    Points : 34
    Points
    34
    Par défaut
    Merci de ta réponse.
    Malheureusement ça ne marche pas.

    J'ai essayé tes deux méthodes et j'ai une erreur :
    "Item not found in this collection"
    et il me surligne la ligne rslt = rq![Resultat]

  4. #4
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 368
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 368
    Points : 23 840
    Points
    23 840
    Par défaut
    Quel SQL utilises-tu ?

    A+

  5. #5
    Nouveau membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Mars 2012
    Messages
    71
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2012
    Messages : 71
    Points : 34
    Points
    34
    Par défaut
    Ben, du SQL de Access?... Je vois pas autre chose que je puisse utiliser avec ça, non?

  6. #6
    Nouveau membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Mars 2012
    Messages
    71
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2012
    Messages : 71
    Points : 34
    Points
    34
    Par défaut
    Sinon il ne faut pas juste cocher une biblio en plus dans les préférences? (je viens de le faire pour autre chose, et ça fonctionne tout de suite mieux)

  7. #7
    Expert confirmé
    Avatar de vodiem
    Homme Profil pro
    Vivre
    Inscrit en
    Avril 2006
    Messages
    2 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    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 895
    Points : 4 325
    Points
    4 325
    Par défaut
    salut marot_r et bienvenue Tytelle

    Citation Envoyé par marot_r
    Quel SQL utilises-tu ?
    Citation Envoyé par Tytelle
    Ben, du SQL de Access?... Je vois pas autre chose que je puisse utiliser avec ça, non?
    laisse moi deviner la couleur de tes cheveux...

    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT distinct max(IIf([Cost ($)7],'Dec',IIf([Cost ($)6],'Nov',''))) FROM Table1
    "IIf([Cost ($)7]..." suppose [Cost ($)7] comme boolean (type: Oui/Non) ce qui est contradictoire avec ce que tu dis: "en fonction de chiffres que je trouve dans ma table"
    de plus : "J'aimerais récupérer ce string" (ce qui correspond bien au type du champ [Resultat]) mais étant donné:
    et
    de nouveau il y a une incomptabilité de type.

    je te conseille de reformuler autrement ou ... de revoir ta teinture??...

  8. #8
    Nouveau membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Mars 2012
    Messages
    71
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2012
    Messages : 71
    Points : 34
    Points
    34
    Par défaut
    Le problème ne vient pas de l'incompatibilité de type.
    Je formule mon problème (puisque les cheveux, j'ai pas envie de changer).

    Dans cette requete je récupère un mois en fonction du chiffre qui se trouve dans les intitulés de mes colonnes.
    En effet, je vérifie que la colonne nommée [Cost ($)7] existe, si elle existe je sais que nous sommes un certain mois et que d'autres tel que [Cost ($)8] ou plus n'existe pas.
    J'aimerais ensuite copier ma table (dans laquelle j'ai cherché le Cost ($)7) dans un nouvelle table que je nommerais en fonction du mois que j'aurais trouvé.
    Il faut donc que je puisse récupérer le résultat de ma requête.

    C'est assez explicite pour un mec?

  9. #9
    Expert confirmé
    Avatar de vodiem
    Homme Profil pro
    Vivre
    Inscrit en
    Avril 2006
    Messages
    2 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    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 895
    Points : 4 325
    Points
    4 325
    Par défaut
    c'est ca que tu veux?:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    Dim rq As Recordset
    Dim Resultat As String
    Dim n As String
     
    Set rq = CurrentDb.OpenRecordset("Table1")
    On Error Resume Next
    n = rq.Fields("Cost ($)6").Name: If Err = 0 Then Resultat = "Nov" Else Err.Clear
    n = rq.Fields("Cost ($)7").Name: If Err = 0 Then Resultat = "Dec" Else Err.Clear
    n = rq.Fields("Cost ($)8").Name: If Err = 0 Then Resultat = "Jan" Else Err.Clear
    '... priorité descendante
    On Error GoTo 0
     
    DoCmd.SetWarnings False
    DoCmd.RunSQL "SELECT * INTO " & Resultat & " FROM Table1"
     
    Set rq = Nothing
    Citation Envoyé par Tytelle
    C'est assez explicite pour un mec?
    ne va pas croire que j'ai subi une pénectomie.

  10. #10
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 368
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 368
    Points : 23 840
    Points
    23 840
    Par défaut
    Ok j'ai été peu clair lors de ma dernière question.

    Tytelle, peux-tu poster la requête SQL que tu utilises et qui génère actuellement l'erreur que tu m'as mentionnée ?

    A+

  11. #11
    Nouveau membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Mars 2012
    Messages
    71
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2012
    Messages : 71
    Points : 34
    Points
    34
    Par défaut
    Merci Vodiem!
    Ca fonctionne très bien!

    Merci aussi marot_r

  12. #12
    Nouveau membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Mars 2012
    Messages
    71
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2012
    Messages : 71
    Points : 34
    Points
    34
    Par défaut
    J'avais une autre question.
    Est-ce qu'on peut sélectionner une table dynamiquement (genre avec une dialog box, ou un truc équivalent) pour ensuite effectuer des requêtes et exportations?

  13. #13
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 368
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 368
    Points : 23 840
    Points
    23 840
    Par défaut
    Oui mais c'est un sujet en soi, je t'invite à ouvrir une nouvelle discussion à ce propos.

    A+

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [WD15] Récupérer résultats requête SQL par un webservice
    Par fucce dans le forum WinDev
    Réponses: 12
    Dernier message: 16/02/2010, 15h17
  2. Limiter résultat requete sql par critère
    Par filoulebauju dans le forum Requêtes
    Réponses: 4
    Dernier message: 07/09/2009, 15h11
  3. Afficher résultat requete SQL dans un TQuikRep
    Par flo291288 dans le forum C++Builder
    Réponses: 0
    Dernier message: 20/06/2008, 16h08
  4. affichage résultat requete SQL en visual basic
    Par neg03 dans le forum Requêtes et SQL.
    Réponses: 3
    Dernier message: 14/04/2008, 12h57
  5. Récupérer la requete SQL
    Par shaftmanpro2 dans le forum Forms
    Réponses: 5
    Dernier message: 10/04/2008, 15h43

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo