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

VB 6 et antérieur Discussion :

problème de recherche avec les collections


Sujet :

VB 6 et antérieur

  1. #1
    Nouveau membre du Club
    Inscrit en
    Décembre 2006
    Messages
    57
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 57
    Points : 38
    Points
    38
    Par défaut problème de recherche avec les collections
    Bonjour !

    Je met le résultat d'une requête dans une collection. Pour chacun des éléments je lui assigne une clé.

    Comment fait-on pour rechercher via la clé ? Es-ce possible ?

    Voici ce que je fais. Je rempli ma collection :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
        Dim strSql As String
     
        strSql = "SELECT id_ville, nom " + _
                 "FROM   vue_ac_ville " + _
                 "WHERE id_ville <> 1 "
     
        Set oraVilleATraiter = odbDatabase.CreateDynaset(strSql, 0&)
     
        Do While Not oraVilleATraiter.EOF
            gl_ColVilleATraiter.Add oraVilleATraiter.Fields("id_ville").Value, oraVilleATraiter.Fields("id_ville").Value
     
            oraVilleATraiter.MoveNext
        Loop
    Si je comprends bien, selon ma requête je me retrouverais avec ce genre de collection

    Item / clé
    2 / 2
    3 / 3
    4 / 4
    .
    .
    .

    Je fais ce genre de recherche pour voir si je retrouve le id_ville 1 :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
        Dim varVilleTrouve As Variant
     
        varVilleTrouve = gl_ColVilleATraiter.Item(1)
    il me retourne, le premier item soit 2. Es-ce normale ? Moi je voudrais qu'il me retourne rien étant donné que le id_ville ne se trouve pas dans la collection.

    Merci pour votre aide.

  2. #2
    Modérateur
    Avatar de ProgElecT
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2004
    Messages
    6 077
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Décembre 2004
    Messages : 6 077
    Points : 17 171
    Points
    17 171
    Par défaut
    Je fais ce genre de recherche pour voir si je retrouve le id_ville 1
    Là il est renvoyé l'item d'indice N° 1

    Pourquoi ne pas rechercher plutôt le nom de la ville dans la requette d'ouverture du Dynaset ? (assurement plus rapide qu'une recherche dans une liste, un tableau ou une colletion)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
        Dim strSql As String
        Dim NomVilleAtraiter As String
        NomVilleAtraiter = "LAVILLE" 'pour l'exemple
        strSql = "SELECT id_ville, nom " & _
                 "FROM  vue_ac_ville " & _
                 "WHERE nom = " & NomVilleAtraiter
     
        Set oraVilleATraiter = odbDatabase.CreateDynaset(strSql, 0&)
     
        If Not oraVilleATraiter.EOF Then
         'trouvé, donc traiter
         Else
         'pas trouvé, donc ne pas traiter
        End If
    Sinon faire F1 sur Dim gl_ColVilleATraiter As Collection,

    Citation Envoyé par MSDN
    l'itération de l'ensemble de la collection est possible au moyen de l'instruction For Each ... Next.
    Avec une condition If ... Then dans la boucle For Each ... Next
    Soyez sympa, pensez -y
    Balises[CODE]...[/CODE]
    Balises[CODE=NomDuLangage]...[/CODE] quand vous mettez du code d'un autre langage que celui du forum ou vous postez.
    Balises[C]...[/C] code intégré dans une phrase.
    Balises[C=NomDuLangage]...[/C] code intégré dans une phrase quand vous mettez du code d'un autre langage que celui du forum ou vous postez.
    Le bouton en fin de discussion, quand vous avez obtenu l'aide attendue.
    ......... et pourquoi pas, pour remercier, un pour celui/ceux qui vous ont dépannés.
    👉 → → Ma page perso sur DVP ← ← 👈

Discussions similaires

  1. Problème de recherche avec les REGEX
    Par sampaiX dans le forum Entrée/Sortie
    Réponses: 6
    Dernier message: 15/06/2010, 16h47
  2. problème avec les collection génériques
    Par David Fouejio dans le forum Windows Forms
    Réponses: 9
    Dernier message: 18/02/2010, 16h48
  3. Problème avec les collections
    Par kore62 dans le forum Langage
    Réponses: 11
    Dernier message: 22/08/2007, 14h26
  4. problème avec les collections
    Par root76 dans le forum Langage
    Réponses: 4
    Dernier message: 08/01/2007, 15h06
  5. Réponses: 6
    Dernier message: 19/05/2005, 11h06

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