Erreur de compilation : Impossible d'affecter à un tableau / OBJ

Fermé
Earwenn Messages postés 2 Date d'inscription jeudi 24 mars 2016 Statut Membre Dernière intervention 24 mars 2016 - 24 mars 2016 à 10:00
Earwenn Messages postés 2 Date d'inscription jeudi 24 mars 2016 Statut Membre Dernière intervention 24 mars 2016 - 24 mars 2016 à 11:53
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 :

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 :
    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 suivante.
Set tab_staff = BDD_STAFF.Select_By_Login(Environ("USERNAME"))
Merci d'avance.

Cordialement
@GLeviavant

1 réponse

Earwenn Messages postés 2 Date d'inscription jeudi 24 mars 2016 Statut Membre Dernière intervention 24 mars 2016
Modifié par Earwenn le 24/03/2016 à 11:54
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

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 :

    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)


"Rien n'est plus insondable que le système de motivations derrière nos actions."
@Earwenn
0