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 :

Identifier la classe d'un objet


Sujet :

VBA Access

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 11
    Par défaut Identifier la classe d'un objet
    Bonjour,
    j'ai écrit un module de classe dont une méthode reçoit en paramètre une référence d'objet, en l'occurence soit un recordset, soit un formulaire.
    Comment identifier la classe de l'objet en question.
    J'ai trouvé une parade en testant s'il s'agit d'un formulaire. Si non, je suppose que c'est obligatoirement un recordset, mais un danger subsiste.

    Voic le code que j'ai utilisé, mais je me demande s'il n'y a pas une méthode plus sûre.

    Function init(source)

    dim estformulaire as integer
    dim requete

    '*** récupérer le nom de la table sous-jacente du recordset ou du formulaire

    ' l'objet source est-il un formulaire ouvert ?
    estformulaire = SysCmd(acSysCmdGetObjectState, acForm, source.Name)
    If estformulaire <> 0 Then
    ' formulaire
    requete = source.RecordSource
    Else
    ' recordset
    requete = source.Name
    End If

    ...

    End Function

  2. #2
    Expert confirmé
    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
    Par défaut
    Bonjour,

    tu peux essayer avec l'opérateur TypeOf:
    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
    Function init(source)
     
    dim sourcetype As Integer
    dim requete
     
    '*** récupérer le nom de la table sous-jacente du recordset ou du formulaire
     
    ' Test du type de l'objet Source
    If TypeOf source Is Access.Form Then sourcetype = 1
    If TypeOf source Is DAO.Recordset Then sourcetype = 2
     
    Select Case sourcetype
        Case 1
            requete = source.RecordSource
        Case 2
            requete = source.Name
        Case Else
    	' Ni un formulaire, ni un recordset DAO
    End Select
     
    ...
     
    End Function
    A+

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 11
    Par défaut
    Merci beaucoup.[RESOLU]

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

Discussions similaires

  1. Réponses: 5
    Dernier message: 08/01/2007, 14h05
  2. Réponses: 10
    Dernier message: 10/01/2006, 14h14
  3. [C++] recuperer la classe d'un objet
    Par erwan.bodere dans le forum C++
    Réponses: 2
    Dernier message: 30/11/2005, 10h14
  4. [Strategie]Classes de mapping & Objets métier
    Par yanis97 dans le forum JDBC
    Réponses: 19
    Dernier message: 16/05/2005, 09h57
  5. [Débutant]Déterminer la classe d'un objet
    Par Wisefool dans le forum Langage
    Réponses: 4
    Dernier message: 06/05/2004, 12h55

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