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 régulier
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    472
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 472
    Points : 121
    Points
    121
    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 sénior

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

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

    Informations forums :
    Inscription : Octobre 2004
    Messages : 9 501
    Points : 32 311
    Points
    32 311
    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 régulier
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    472
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 472
    Points : 121
    Points
    121
    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
    Responsable Access

    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
    Points : 14 524
    Points
    14 524
    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 sénior

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

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

    Informations forums :
    Inscription : Octobre 2004
    Messages : 9 501
    Points : 32 311
    Points
    32 311
    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 régulier
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    472
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 472
    Points : 121
    Points
    121
    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 sénior

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

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

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

    Que vaut COL_CMembres.Count ?

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

    Informations forums :
    Inscription : Juin 2005
    Messages : 472
    Points : 121
    Points
    121
    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
    Responsable Access

    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
    Points : 14 524
    Points
    14 524
    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 régulier
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    472
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 472
    Points : 121
    Points
    121
    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
    Responsable Access

    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
    Points : 14 524
    Points
    14 524
    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