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 :

l'objet user que j'ai créé n'est pas accessible


Sujet :

VBA Access

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 7
    Points : 7
    Points
    7
    Par défaut l'objet user que j'ai créé n'est pas accessible
    Bonjour
    J'ai défini une classe clsUSER qui contient les informations sur l'utilisateur connecté à ma base de données (identifiant, droit, chemin d'accès à la base de données...)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Option Compare Database
     
    Option Explicit
    'variable string qui contiendra le matricule
    Private matricule As String
    Private droit As Integer
    Private DB_directory As String 'répertoire où se trouve la BD
    Private previous_frm As String 'contient la page precedente
    Private next_frm As String 'contient la page suivante
    Private current_frm As String 'contient la page courante
    Private choosed_opt As Integer 'contient l'option choisie par l'utilisateur
    Private cnx As ADODB.Connection 'connection courante de l'utilisateur
    Private cur_database As Database 'base de données courante
    J'ai déclaré une variable pers de type clsUSER dans un module (module1)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Public pers As clsUSER 'utilisateur connecté
    Lors du lancement de l'application, après l'identification de l'utilisateur, j'instancie la variable pers et je la met à jour suivant les informations rentrées pas l'utilisateur. (Tout ceci dans un module de formulaire intitulé Form_connexion dont voici un extrait).

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Set pers = New clsUSER
      pers.directory = getDirectory()
      pers.id = rs("matricule").value
      pers.permission = rs("code_droit").value
      MsgBox "Personne créée avec comme nom " & pers.id & " permission " & pers.permission
    Le problème est que je n'arrive pas, dans les autres modules formulaires, à utiliser les propriétés de cet objet (pers est de type clsUSER et Connect_BD permet d'avoir accès à la prppriété cnx de clsUSER):

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    req2 = Traitement_tblTempMesure_car(product, nbClic, value, signe, pers.Connect_BD)
    Le message d'erreur qui s'affiche est le suivant

    Erreur d'exécution 91:
    Variable objet ou variable de bloc With non définie
    Qu'est ce qui est à l'origine de ce problème? Comment le résoudre?

  2. #2
    Expert éminent
    Avatar de LedZeppII
    Homme Profil pro
    Maintenance données produits
    Inscrit en
    Décembre 2005
    Messages
    4 485
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Maintenance données produits
    Secteur : Distribution

    Informations forums :
    Inscription : Décembre 2005
    Messages : 4 485
    Points : 7 759
    Points
    7 759
    Par défaut
    Bonsoir,

    c'est peut-être une erreur dans la propriété Get de la classe.
    Code vb : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Porperty Get Connect_BD As ADODB.Connection
        Set Connect_BD = cnx
    End Property
    si le "Set" est manquant

    A+

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 7
    Points : 7
    Points
    7
    Par défaut
    Voici le code de ma classe:

    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
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    Option Compare Database
     
    Option Explicit
    'variable string qui contiendra le matricule
    Private matricule As String
    Private droit As Integer
    Private DB_directory As String 'répertoire où se trouve la BD
    Private previous_frm As String 'contient la page precedente
    Private next_frm As String 'contient la page suivante
    Private current_frm As String 'contient la page courante
    Private choosed_opt As Integer 'contient l'option choisie par l'utilisateur
    Private cnx As ADODB.Connection 'connection courante de l'utilisateur
    Private cur_database As Database 'base de données courante
     
    Private Sub Class_Initialize()
        matricule = vbNullString
        droit = 1
        DB_directory = vbNullString
        previous_frm = vbNullString
        next_frm = vbNullString
        current_frm = vbNullString
        choosed_opt = 0
        Set cnx = New ADODB.Connection
     
    End Sub
     
    Public Property Let theDatabase(ByRef db As Database)
       Set cur_database = db
    End Property
     
    Public Property Let directory(ByVal name As String)
        DB_directory = name
    End Property
     
    Public Property Let id(ByVal mat As String)
        matricule = mat
    End Property
     
    Public Property Let permission(ByVal perm As Integer)
        droit = perm
    End Property
     
    Public Property Let previous_page(ByVal frm As String)
        previous_frm = frm
    End Property
     
    Public Property Let next_page(ByVal frm As String)
        next_frm = frm
    End Property
     
    Public Property Let current_page(ByVal frm As String)
       current_frm = frm
    End Property
     
    Public Property Get theDatabase() As Database
        Set theDatabase = cur_database
    End Property
     
    Public Property Get directory() As String
        directory = DB_directory
    End Property
     
    Public Property Get id() As String
       id = matricule
    End Property
     
    Public Property Get permission() As Integer
        permission = droit
    End Property
     
    Public Property Get previous_page() As String
        previous_page = previous_frm
    End Property
     
    Public Property Get next_page() As String
        next_page = next_frm
    End Property
     
    Public Property Get current_page() As String
       current_page = current_frm
    End Property
     
    Public Property Get Connect_BD() As ADODB.Connection
        Set Connect_BD = cnx
    End Property
     
    Public Sub Connect()
        cnx.Provider = "Microsoft.Jet.Oledb.4.0"
        cnx.ConnectionString = DB_directory
        cnx.Open
    End Sub
     
    Public Sub Disconnect()
        cnx.Close
        Set cnx = Nothing
    End Sub
     
    Public Sub printInfo()
        MsgBox "Les infos de l'user " & matricule & " la Bd " & DB_directory
    End Sub
    Mais je ne comprends pas d'où vien l'erreur signalée dans l'énoncé de ce problème

  4. #4
    Membre expérimenté

    Profil pro
    Inscrit en
    Juin 2003
    Messages
    1 229
    Détails du profil
    Informations personnelles :
    Localisation : Sénégal

    Informations forums :
    Inscription : Juin 2003
    Messages : 1 229
    Points : 1 579
    Points
    1 579
    Par défaut
    ...
    Private matricule As String
    Private droit As Integer
    Private DB_directory As String 'répertoire où se trouve la BD
    Private previous_frm As String 'contient la page precedente
    Private next_frm As String 'contient la page suivante
    Private current_frm As String 'contient la page courante
    Private choosed_opt As Integer 'contient l'option choisie par l'utilisateur
    Private cnx As ADODB.Connection 'connection courante de l'utilisateur
    Private cur_database As Database 'base de données courante
    ...
    Essai de changer tes Private en Public pour voir !

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 7
    Points : 7
    Points
    7
    Par défaut
    Merci à tous pour votre aide.
    Je me suis rendue compte que la connection à la base de données de l'objet pers (de la classe clsUSER) que j'utilise est détruite dès qu'il y a une erreur dans l'exécution d'une requete (la requête utilise la connection ADODB de cet la classe clsUSER).
    Donc à chaque fois, il me faut recommencer l'initialisationde l'objet quand j'ai une erreur dans l'exécution d'une requete.

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

Discussions similaires

  1. Tant que la variable "age" n'est pas un nombre
    Par adicarbo dans le forum C
    Réponses: 4
    Dernier message: 13/11/2014, 14h46
  2. Réponses: 9
    Dernier message: 08/07/2011, 11h09
  3. [XL-2003] Evènement "La valeur que vous avez tapée n'est pas valide".
    Par pgtsdvl dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 21/07/2010, 06h31
  4. Réponses: 0
    Dernier message: 24/08/2009, 20h30
  5. ce que je pense ecrire n'est pas ce que je relis
    Par laurent57150 dans le forum C
    Réponses: 6
    Dernier message: 30/05/2006, 13h41

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