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 :

Erreur de compilation : Impossible d'affecter à un tableau / OBJET / Access [AC-2007]


Sujet :

VBA Access

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Invité
    Invité(e)
    Par défaut Erreur de compilation : Impossible d'affecter à un tableau / OBJET / Access
    Bonjour à tous et à toutes,

    Je suis confrontée à un probleme depuis deux jours. Forum et autres tutos ne me donne réponse à mon probleme.
    J'ai tenté la mise en place d'objet dans Access.
    Je vous explique

    j'ai un objet Staff dans lequel je déclare les propriétés etc.

    j'ai un objet BDD_STAFF dans lequel je fais ceci :
    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
     
    Public Function Select_By_Login(vLogin As String) As Class_Staff()
        Dim rs As Recordset
        Dim wRcd As WrapperRecord
        Dim users() As Class_Staff
        Dim i As Integer
     
        Dim request As String
     
        request = SELECTc & ALL_INFORMATION & FROMc & TABLE & WHEREc & CRITERIA_ID & ANDc & CRITERIA_OUT_F
        request = Replace(request, "[Id]", vLogin)
     
        Set wRcd = New WrapperRecord
        Set rs = wRcd.executeRequest(request, CurrentDb)
        i = 0
        While Not rs.EOF
            MsgBox (rs.Fields(1))
            Set users(i) = mapping_staff_All(rs)
            i = i + 1
            rs.MoveNext
        Wend
        Set Select_By_Login = users
    End Function
    Mon request est alimenté par des constantes définies.
    Mon wrapperRecord est un objet dans lequel je lance mes requetes (pour explication).
    Mon Mapping alimente mon objet STAFF.
    J'ai effectué des tests avec la récupération d'un seul enregistrement où je n'ai eu aucun probleme (structure idem).
    J'ai seulement modifié pour qu'à la place d'un seul objet je récupère un tableau d'objet.
    Ma fonction est lancé au chargement de mon formulaire mais voila PROBLEME : Erreur de compilation : Impossible d'affecter à un tableau.

    Code sur chargement du formulaire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
        Dim BDD_STAFF As BDD_STAFF
        Dim tab_staff() as Class_Staff
        
        Set BDD_STAFF = New BDD_STAFF
        Set tab_staff = BDD_STAFF.Select_By_Login(Environ("USERNAME"))
    Le compilateur relève l'erreur sur la ligne en rouge.

    Merci d'avance.

    Cordialement
    @GLeviavant

  2. #2
    Invité
    Invité(e)
    Par défaut
    Apres une dur nuit a réfléchir sur ce probleme.
    J'ai eu une illumination.

    Voila je n'ai pas declaré des tableaus du type de classe voulu mais j'ai remplacé cela par un objet Collection.
    Ma fonction retourne une collection et je la récupère ainsi.

    En plus de deux trois maladresses j'ai pu atteindre ce que je voulais.
    donc pour ce que ca pourrait intéresser voila le nouveau code

    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
    Public Function Select_By_Login(vLogin As String) As Collection
        Dim rs As Recordset
        Dim wRcd As WrapperRecord
        Dim users As New Collection
        Dim user As Class_Staff
     
        Dim request As String
     
        request = SELECTc & ALL_INFORMATION & FROMc & TABLE & WHEREc & CRITERIA_ID & ANDc & CRITERIA_OUT_F
        request = Replace(request, "[Id]", vLogin)
     
        Set wRcd = New WrapperRecord
        Set rs = wRcd.executeRequest(request, CurrentDb)
     
        While Not rs.EOF
            Set user = mapping_staff_All(rs)
            users.Add Item:=user
            rs.MoveNext
        Wend
        Set Select_By_Login = users
    End Function
    et dans la procédure qui fait appel a cette fonction :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
        Dim BDD_STAFF As BDD_STAFF
        Dim tab_staf As Collection
        Dim user As Class_Staff
     
        Set BDD_STAFF = New BDD_STAFF
        Set tab_staff = BDD_STAFF.Select_By_Login(Environ("USERNAME"))
     
        Set user = New Class_Staff
        Set user = tab_staff.Item(1)
    Dernière modification par argyronet ; 02/04/2016 à 22h31. Motif: Pas d'abbréviation grossière.

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

Discussions similaires

  1. Compilation impossible : Erreur BG1002
    Par Tehko dans le forum Silverlight
    Réponses: 2
    Dernier message: 13/05/2014, 11h39
  2. Réponses: 9
    Dernier message: 10/06/2013, 09h24
  3. Réponses: 3
    Dernier message: 10/03/2011, 11h45
  4. Réponses: 2
    Dernier message: 17/01/2010, 20h44
  5. Erreur de compilation de la classe pour JSP impossible
    Par all2me2001 dans le forum Servlets/JSP
    Réponses: 2
    Dernier message: 07/10/2009, 12h14

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