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ération Sélection ListBox dans Requête [AC-2007]


Sujet :

VBA Access

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Femme Profil pro
    Étudiant
    Inscrit en
    Mai 2012
    Messages
    49
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2012
    Messages : 49
    Par défaut Récupération Sélection ListBox dans Requête
    Bonjour,

    Je travaillle sur une formulaire Access 2007.

    Ma listbox contient les enregistrements de la colonne NOM_BANQUE de ma table Banque.

    Je souhaite récupérer la sélection sur NOM_BANQUE dans ma variable globale String txt

    ex : Si Sélection NOM_BANQUE = BANQUE1 alors txt = BANQUE1

    En effet, uen fois le nom de la banque récupérée dans ma variable txt, je souhaite l'utiliser dans une requête qui me permettra de trouver le CODE_BANQUE qui lui est associé dans ma table Banque.

    Je ne vois pas en quoi mon code est incorrect :

    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
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
     
    Sub InfosBanque(TypeAffich As Integer)
     
     Dim oDb As DAO.Database
        Dim oRst As DAO.Recordset
        Dim mySQL As String
        Dim str_Code_Banque As String  ' variable donnant le CIB d'une banque
     
        Dim i As Integer
     
        On Error GoTo Err_InfosTxt
     
        Set oDb = CurrentDb
     
        'Parcours de la listbox
     
        For i = 0 To Form_Formulaire1.ListBanque.ListCount - 1
     
            'Vérification que l'élement est sélectionné
            If Form_Formulaire1.ListBanque.Selected(i) = True Then
     
     
                'récupération d 'une nom de la banque sélectionnée
                txt = Form_Formulaire1.ListBanque.ItemData(i)
     
        'Nous fermons les connexions
           End If
         Next i
     
     
            mySQL = "SELECT CODE_BANQUE"
            mySQL = mySQL & " FROM BANQUE"
            mySQL = mySQL & " WHERE BANQUE.NOM_BANQUE Like '" & txt & "'"
     
     
    Set oRst = oDb.OpenRecordset(mySQL, dbOpenSnapshot)
    str_Code_Banque = oRst.Fields(0)
     
     oRst.Close
        oDb.Close
        Set oDb = Nothing
        Set oRst = Nothing
     
     
        'Nous pouvons maintenant attribuer à notre Label ou MsgBox le contenu de notre variable "str_Code_Banque "
         Select Case TypeAffich
                Case Is = -1       'met à jour le Label
     
                      Form_Formulaire1.Txt_Code_Banque.ControlSource = _
                     "=" & """" & str_Code_Banque & """"
     
                Case Is = 0
                       MsgBox str_Code_Banque  'Ouvre la MsgBox avec le même résultat
                End Select
     
     
     
    Exit_InfosTxt:
       Exit Sub
     
    Err_InfosTxt:
      MsgBox Err.Description
       Resume Exit_InfosTxt
     
    End Sub
    Je vous remercie pour votre aide.

    Cordialement,

  2. #2
    Membre expérimenté
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2012
    Messages
    191
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Mai 2012
    Messages : 191
    Par défaut
    Bonjour,

    Dans ta requête SQL qui te permet d'ouvrir ton recordset, il faut que tu précise le nom de la table dans lequel se trouve le champ à récupérer :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    "SELECT MaTable.MonChamp FROM MaTable WHERE MaTable.MonChamp like 'test'
    De plus, tu peux utiliser la fonction Dlookup si tu cherches à ne récupérer qu'un seul enregistrements à la place d'utiliser un recordset:

    http://office.microsoft.com/en-us/ac...001228825.aspx

    Cordialement.

  3. #3
    Expert confirmé Avatar de nico84
    Homme Profil pro
    Consultant/développeur ERP
    Inscrit en
    Mai 2008
    Messages
    3 128
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Consultant/développeur ERP
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 3 128
    Par défaut
    Bonjour,

    Une listbox peut avoir plusieurs colonnes, par exemple le nom de la banque et son code. Une fois que l'utilisateur a fait un choix :
    listbanque.column(0) (ou listbanque) contient le nom de la banque choisie
    listbanque.column(1) contient son code

    Ainsi pas de vba donc pas de bug

  4. #4
    Invité
    Invité(e)
    Par défaut
    Bonjour

    Le Like ne servira à rien sans caractère générique * : http://loufab.developpez.com/tutorie...operateurlike/

    Et de toute façon un = serait mieux qu'un Like, non ? Tu recherches plusieurs banques ?

    De plus il y a un tuto sur les fonctions de domaines en Français pour la fonction DLookup : http://starec.developpez.com/tuto/fonctionsdomaines/

    Philippe

  5. #5
    Membre éclairé
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2012
    Messages
    64
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2012
    Messages : 64
    Par défaut
    Bonjour,

    Comme le dit Philippe, utilise "=" plutôt que LIKE. Sinon quelle erreur rencontres-tu ? Met un point d'arrêt quelque part et regarde les valeurs prisent par tes variables. Tient nous au courrant

  6. #6
    Membre averti
    Femme Profil pro
    Étudiant
    Inscrit en
    Mai 2012
    Messages
    49
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2012
    Messages : 49
    Par défaut
    Bonjour,

    Désolée pour ma réponse tardive...

    Je vous rermercie pour vos réponses Taylorised, Philippe JOCHMANS, nico84 et Mr.Mof !

    Comme ont pu le dire Taylorised, Philippe JOCHMANS et Mr. Mof, il fallait remplacer le 'LIKE' par un "=".

    nico84, ta solution avec "listbanque.column(n)" m'a été utile pour résoudre un autre problème.


    Cordialement,

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

Discussions similaires

  1. [Doctrine] Primary key et récupération des champs dans requête
    Par Fench dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 05/09/2012, 10h30
  2. Récupération du mois dans requête
    Par FIFI33160 dans le forum Modélisation
    Réponses: 1
    Dernier message: 03/09/2008, 04h45
  3. Réponses: 4
    Dernier message: 14/02/2008, 09h43
  4. [C# 2.0] Sélection obligatoire dans un ListBox
    Par oodini dans le forum Windows Forms
    Réponses: 1
    Dernier message: 12/07/2006, 18h37
  5. [Débutant] Sélection multiples dans une Listbox
    Par eraim dans le forum Access
    Réponses: 4
    Dernier message: 15/10/2005, 03h21

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