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

Requêtes et SQL. Discussion :

Utiliser variable dans requête Select [VBA] [AC-2003]


Sujet :

Requêtes et SQL.

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2009
    Messages : 8
    Points : 6
    Points
    6
    Par défaut Utiliser variable dans requête Select [VBA]
    Bonjour à tous,

    J'utilise Access 2003.

    Je cherche "simplement" à utiliser une variable string pour la condition where d'une requête select.

    Ma table s'appelle Outils, la clé est N° d'identification et Type d'outil un champ dont la valeur est commune à plusieurs enregistrements.

    Voici le code essayé:

    Dans un module

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Public num_identification As Variant
     
    Public Function numident() As Variant
    numident = num_identification
    End Function
    Dans ma procédure

    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
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    Dim bdd As DAO.Database
    Dim tableactive As DAO.Recordset
    Dim type_outil As String
     
    'On récupère la variable saisie par l'utilisateur dans le formulaire actif
    num_identification = Me.Listbox_numoutil.Value
     
    'Sélectionner la bdd voulue
    Set bdd = CurrentDb
     
    'Je pense qu'il y a un probléme de syntaxe ici
    type_outil = "SELECT [Type d'outil] from [Outils] where [N° d'identification]= numident()"
    Set tableactive = bdd.OpenRecordset(type_outil, dbOpenDynaset)
     
    If Not tableactive.EOF Then
      tableactive.MoveFirst
      While Not tableactive.EOF
         tableactive.MoveNext
      Wend
    Else
      MsgBox "La requête ne correspond à aucun enregistrement."
    End If
     
    'J'essaye d'utiliser le résultat de la requête
    If tableactive("Type d'outil").Value = "F" Then
                masquer_masques_saisie
                Me.Textbox_diafiliere.Visible = True
     
    End If
    J'obtiens l'erreur 3021, aucun enregistrement en cours alors que je suis certain d'avoir un enregistrement correspondant puisque la valeur de ma variable num_identification provient d'une listbox qui elle-même récupère les numéros d'identification existants dans ma table.

    Est-ce que vous avez une idée des erreurs que j'ai commises?

    Merci d'avance pour vos réponses.

  2. #2
    Rédacteur/Modérateur

    Avatar de Jean-Philippe André
    Homme Profil pro
    Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Inscrit en
    Juillet 2007
    Messages
    14 656
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Canada

    Informations professionnelles :
    Activité : Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 656
    Points : 34 370
    Points
    34 370
    Par défaut
    Bonjour,
    bienvenue sur DVP

    quelques questions quant à la méthode que tu utilises :
    - pourquoi passer par ta fonction num_ident si tu attribues la valeur directement 3 lignes plus haut ?
    - tu utilises une variable dite globale, est-ce souhaité ?
    - l'utilisation d'un variant peut aussi poser problème dans certains cas.

    en plus du présent forum, de nombreuses ressources sont à ta disposition :
    - une http://access.developpez.com/faq
    - des tutoriaux http://access.developpez.com/cours
    - des critiques de livres http://access.developpez.com/livres

    Ici, je te recommande un peu de lecture,
    http://jpcheck.developpez.com/tutori...es-initiation/
    pour pallier à ton utilisation de variable globale
    et
    http://access.developpez.com/faq/?page=SQL#ReqParamVar
    pour l'utilisation de paramètre dans une requête.

    Si certains éléments te paraissent encore complexes, n'hésite pas à nous poser des questions.

    Bon courage

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2009
    Messages : 8
    Points : 6
    Points
    6
    Par défaut
    Tout d'abord merci d'avoir répondu si vite.

    J'utilise la fonction num_ident car j'ai déjà essayé de passer directement la variable dans le SELECT avec la déclaration de num_identification en string locale mais ça ne marchait pas.

    En faisant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    type_outil = "SELECT [Type d'outil] from [Outils] where [N° d'identification]= num_identification"
    j'avais une erreur 3061 trop peu de paramètres 1 attendu

    En faisant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    type_outil = "SELECT [Type d'outil] from [Outils] where [N° d'identification]= """ & num_identification
    j'avais une erreur 3075 erreur de syntaxe dans la chaîne dans l'expression '[N° d'identification]= "F'

    et en faisant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Set tableactive = bdd.OpenRecordset("SELECT [Type d'outil] from Outils where [N° d'identification]= '" & num_identification & "' ")
    ma msgbox Le jeu d'enregistrement est vide apparaît et j'ai encore l'erreur 3021...

    Je continue de chercher la syntaxe correcte

    Merci pour votre site car bien que je ne me sois inscris que maintenant, cela fait déjà quelques temps que je parcours réguliérement les Forums et les tutoriels sur developpez.net et on y trouve des informations utiles et pertinentes.

  4. #4
    Rédacteur/Modérateur

    Avatar de Jean-Philippe André
    Homme Profil pro
    Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Inscrit en
    Juillet 2007
    Messages
    14 656
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Canada

    Informations professionnelles :
    Activité : Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 656
    Points : 34 370
    Points
    34 370
    Par défaut
    OK,
    selon que ton champ soit de type numérique ou texte, la syntaxe correcte sera
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    type_outil = "SELECT [Type d'outil] from [Outils] where [N° d'identification]=" & num_identification
    ou
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    type_outil = "SELECT [Type d'outil] from [Outils] where [N° d'identification]='" & num_identification &"'"

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2009
    Messages : 8
    Points : 6
    Points
    6
    Par défaut
    Merci ça marche impec!!!

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

Discussions similaires

  1. Problème variable dans requête SELECT
    Par mary27 dans le forum MS SQL Server
    Réponses: 9
    Dernier message: 15/06/2009, 18h43
  2. [PL/SQL] utilisation de variables dans un select?
    Par Dr Kraft dans le forum SQL
    Réponses: 8
    Dernier message: 11/10/2006, 10h17
  3. Variable dans Requête Vba Access
    Par dorschner dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 31/08/2006, 21h52
  4. récupérer une variable dans un select case
    Par rob2-9 dans le forum VB 6 et antérieur
    Réponses: 13
    Dernier message: 23/12/2005, 10h54
  5. Pl/SQL utilisation d'une variable dans un select
    Par larg dans le forum PL/SQL
    Réponses: 17
    Dernier message: 30/11/2004, 17h08

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