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 :

type variable item collection


Sujet :

VBA Access

  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    473
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 473
    Par défaut type variable item collection
    Bonjour,

    Quel type doit-on mettre lorsque l'on fait appel à la méthode item d'une collection ?

    Voici mon code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    Public Function searchMembreI(index As Integer) As M_CMembre
        'retour d'un membre en fonction de la clef primaire
        Dim i As Variant
        i = "K_" & index
        Set searchMembreI = COL_CMembres.Item(CVar(i))
    End Function
    Et lorsque j'execute cela j'obtiens le message suivant :
    Erreur d'execution '91' :
    Variable objet ou variable de bloc with non définie
    Avez vous une idée ?

  2. #2
    Expert éminent

    Avatar de Tofalu
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Octobre 2004
    Messages
    9 501
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Octobre 2004
    Messages : 9 501
    Par défaut
    Le type doit être celui de l'objet dans la collection ou bien Object

    Le problème ici c'est plutot que COL_CMembres n'existe pas

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    473
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 473
    Par défaut
    Je ne comprend pas que le type attendu soit du meme type que les objets contenus dans la collection. A quoi sert cette méthode ?

    http://sinarf.developpez.com/access/vbaclass/#L3

    Je me suis basé sur ce tuto.

    COL_CMembres appartient à ma classe (variable privée), et la méthode aussi.

  4. #4
    Expert confirmé
    Avatar de Arkham46
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    5 865
    Détails du profil
    Informations personnelles :
    Localisation : France, Loiret (Centre)

    Informations forums :
    Inscription : Septembre 2003
    Messages : 5 865
    Par défaut
    Bjr,

    C'est au choix :
    - soit la clé utilisé au moment de l'ajout (avec la méthode Add), c'est un string
    - soit la position de l'élément (numéroté à partir de 1), c'est un long

  5. #5
    Expert éminent

    Avatar de Tofalu
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Octobre 2004
    Messages
    9 501
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Octobre 2004
    Messages : 9 501
    Par défaut
    Citation Envoyé par Arkham46
    Bjr,

    C'est au choix :
    - soit la clé utilisé au moment de l'ajout (avec la méthode Add), c'est un string
    - soit la position de l'élément (numéroté à partir de 1), c'est un long

    Forcément, je n'avais pas compris la question.

  6. #6
    Membre éclairé
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    473
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 473
    Par défaut
    Voila mon code à présent :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    Public Function searchMembreI(index As Integer) As M_CMembre
        'retour d'un membre en fonction de la clef primaire
        Dim i As String
        i = "K_" & CStr(index)
        Debug.Print "key : " & i
        Debug.Print "te : " & COL_CMembres.Count
        Set searchMembreI = COL_CMembres.Item(i)
    End Function
    Et j'ai toujours l'erreur d'execution 91. Les deux debug affichent bien les bonnes valeurs. Une idée sur mon problème ? Quelle est la valeur de retour de la méthode item ? peut-on voir les clefs qui ont été saisies dans la collection ? Merci de votre aide.

  7. #7
    Expert éminent

    Avatar de Tofalu
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Octobre 2004
    Messages
    9 501
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Octobre 2004
    Messages : 9 501
    Par défaut
    Où est défini col_cmembres ? Est t'elle instanciée ?

    Que vaut COL_CMembres.Count ?

  8. #8
    Membre éclairé
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    473
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 473
    Par défaut
    COL_CMembres est définie dans ma classe.
    Instanciée dans class_Initialize

    La valeur de count est 7 ce qui est tout a fait normal.

    J'ai changé ma fonction en ca :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    Public Function searchMembreI(index As Integer) As M_CMembre
        'retour d'un membre en fonction de la clef primaire
        Dim i As String
        i = "K_" & CStr(index)
        Debug.Print "key : " & i
        Debug.Print "test : " & COL_CMembres.Item(i).getNom
        Debug.Print "te : " & COL_CMembres.Count
     
        Set searchMembreI = COL_CMembres.Item(i)
    End Function
    Et le debug "test" me renvoi bien la bonne valeur.

  9. #9
    Expert confirmé
    Avatar de Arkham46
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    5 865
    Détails du profil
    Informations personnelles :
    Localisation : France, Loiret (Centre)

    Informations forums :
    Inscription : Septembre 2003
    Messages : 5 865
    Par défaut
    Bjr,

    Quel est le code d'appel de la fonction searchMembreI?
    Les membres ajoutés à la collection sont ils bien définis au niveau du module?
    (à noter que l'insertion d'un objet dans une collection ne copie pas l'objet, il se crée un lien et donc la portée de l'objet doit être suffisante pour qu'il puisse être récupéré ensuite dans la fonction searchMembreI)

  10. #10
    Membre éclairé
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    473
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 473
    Par défaut
    Dans l'appel de ma fonction je ne mettais pas le Set devant la variable.....trop moche. Merci de votre aide. J'ai un problème sur une autre fonction maintenant, mais je vais créer un nouveau thread.

    Par contre pas compris pour la collection ?
    Ca veut dire que si l'objet instancié ajouté à la collection est détruit il sera pas possible de le retrouver ?

    J'ai une fonction pour ajouter dans ma colelction qui crée un membre temporaire, qui est rajouté à la collection et qui doit etre detruit à la fin de la fonction. Pourtant tout marche.

  11. #11
    Expert confirmé
    Avatar de Arkham46
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    5 865
    Détails du profil
    Informations personnelles :
    Localisation : France, Loiret (Centre)

    Informations forums :
    Inscription : Septembre 2003
    Messages : 5 865
    Par défaut
    Citation Envoyé par samtheh
    Par contre pas compris pour la collection ?
    Ca veut dire que si l'objet instancié ajouté à la collection est détruit il sera pas possible de le retrouver ?
    Non désolé en fait oublie ce que j'ai dis au dessus, dans ce cas ça marche.

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

Discussions similaires

  1. Type mismatch / Item not found in the collection.
    Par broise dans le forum VBA Access
    Réponses: 2
    Dernier message: 18/07/2008, 14h14
  2. Changer le style d'un objet de type variable
    Par Hayato dans le forum 4D
    Réponses: 1
    Dernier message: 01/09/2006, 15h44
  3. [TP] Constantes typées et non typées, variables
    Par poppels dans le forum Turbo Pascal
    Réponses: 3
    Dernier message: 26/10/2005, 23h00
  4. Méthode optimale gestion nombre variable items?
    Par fredtheman dans le forum Décisions SGBD
    Réponses: 4
    Dernier message: 14/08/2004, 20h19
  5. Tableau d'éléments de type variable
    Par Drooxy dans le forum Langage
    Réponses: 4
    Dernier message: 16/03/2003, 15h20

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