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

Access Discussion :

[Vba]recherche infos sur tables


Sujet :

Access

  1. #1
    En attente de confirmation mail
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    1 249
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 1 249
    Points : 314
    Points
    314
    Par défaut [Vba]recherche infos sur tables
    Bonjours,

    Comment faire dans une base de données pour (en DAO) :
    - enumérer les tables
    - énumérer les colonnes (dire où est la clef primaire)
    - énumérer le type des colonnes

    pour enumérer le nom des tables, j'étais partie sur cette solution (mais ça m'affiche le nom de tables qui ne sont pas des tables contenant mes 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
    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
    Sub Main()
     
        MaBDD = "c:\echange\bd1.mdb"
        MaTable = "Essai"
     
        Call OuvrirConnection
     
        '------ recherche nom des tables -----
        Set MaCollection = RechercheNomTable
    End Sub
     
     
    Sub OuvrirConnection(Optional MonMotDePasse As String = "")
    'Se connecte à la BDD
    'MaBDD = Chemin d'acces à la BDD
     
        Dim MonMessageErreur As String
     
        On Error GoTo ErreurOuvrirConnection
     
        ' Ouverture de la base de données
        Set MaConnexion = DBEngine.OpenDatabase(MaBDD, False, False, "MS Access;PWD=" & MonMotDePasse)
     
        Exit Sub
     
    ErreurOuvrirConnection:
        MonMessageErreur = "BDD : " & MaBDD & vbCr & Err.Description
        MsgBox MonMessageErreur
        End
    End Sub
     
    Function RechercheNomTable(Optional a As Boolean = False) As Collection
    'renvoie le nom des tables qui sont dans la BDD
     
        Dim MaCollection As Collection
        Dim MonElement As Variant
     
        Set MaCollection = New Collection
     
        For Each MonElement In MaConnexion.TableDefs
            MaCollection.Add MonElement.Name
        Next MonElement
     
    End Function

  2. #2
    Membre expérimenté
    Avatar de Frank
    Homme Profil pro
    Chef de projet Informatique
    Inscrit en
    Avril 2002
    Messages
    1 095
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Chef de projet Informatique
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Avril 2002
    Messages : 1 095
    Points : 1 392
    Points
    1 392
    Par défaut
    Peut être que ce tutoriel pourra t'aider.

  3. #3
    En attente de confirmation mail
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    1 249
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 1 249
    Points : 314
    Points
    314
    Par défaut
    désolé, j'ai deja cherché sur ce tuto mais je n'ai pas trouvé la réponse (je le trouve pas très clair : manque d'exemple)

  4. #4
    Membre éprouvé
    Avatar de keita
    Homme Profil pro
    Inscrit en
    Novembre 2002
    Messages
    881
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations forums :
    Inscription : Novembre 2002
    Messages : 881
    Points : 1 121
    Points
    1 121
    Par défaut
    salut
    tu as ecrit:
    (mais ça m'affiche le nom de tables qui ne sont pas des tables contenant mes données)
    1/ces tables, si je ne me trompe,sont les tables cachées d'access.
    2/je sugerre donc de les contourner
    a/comme les tables systems d'access ne sont pas nombreuses,les exclure avec l'instruction select case.
    select case NomDeTable
    case in [NomTableSyst1,NomTableSyst2,NomTableSyst(n)]
    ' ne rien faire
    case else
    ' ecrire ici le code pour faire ce que tu veux faire de la table

    end select
    b/(fastidieux mais precis) tu cree une table contenant les noms de toutes les tables de ta BD;et parcourir cette liste à l'aide d'un recordset.cela suppose que tu mettes cette liste à jour au fur et mésure de la creation de nouvelles tables.

  5. #5
    pgz
    pgz est déconnecté
    Expert éminent Avatar de pgz
    Homme Profil pro
    Développeur Office VBA
    Inscrit en
    Août 2005
    Messages
    3 692
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Office VBA
    Secteur : Conseil

    Informations forums :
    Inscription : Août 2005
    Messages : 3 692
    Points : 6 591
    Points
    6 591
    Par défaut
    Pour filtrer la colection des tables, tu peux t'intéresser à la propriété Attributes( = 0) pour te tables courantes, ou au nom( exclure les Sy...)

    En espérant que cela t'aide,

    pgz

  6. #6
    En attente de confirmation mail
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    1 249
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 1 249
    Points : 314
    Points
    314
    Par défaut
    Donc si j'ai bien compris cette solution marche (c'est celle qui me semble la plus rigoureuse) ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     For Each MonElement In MaConnexion.TableDefs
            If MonElement.Attributes = 0 Then
                MaCollection.Add MonElement.Name
            End If
     Next MonElement
    comment fait-on pour determiner le nom des colonnes et la clef primaire ?

  7. #7
    pgz
    pgz est déconnecté
    Expert éminent Avatar de pgz
    Homme Profil pro
    Développeur Office VBA
    Inscrit en
    Août 2005
    Messages
    3 692
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Office VBA
    Secteur : Conseil

    Informations forums :
    Inscription : Août 2005
    Messages : 3 692
    Points : 6 591
    Points
    6 591
    Par défaut
    Pour les noms des champs, cela devrait être simple. Une Table( objet TableDef) contient une collection Fields d'élément Field dont tu peux consulter les propriétés : Name, attributes ( pour les num auto je crois), ...

    Tu devrais trouver par là.

    En espérant que cela t'aide,

    pgz

  8. #8
    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 : 41
    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 Emcy
    désolé, j'ai deja cherché sur ce tuto mais je n'ai pas trouvé la réponse (je le trouve pas très clair : manque d'exemple)
    En même temps, il fait déjà 100 pages, donc l'alourdir d'exemples aurait été assez lourd d'autant plus que les exemples sont nombreux ici :

    http://access.developpez.com/sources

    Notamment :

    Lister les tables et les champs d'une base de données

    Un peu de recherche est parfois nécessaire pour trouver la bonne documentation

  9. #9
    En attente de confirmation mail
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    1 249
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 1 249
    Points : 314
    Points
    314
    Par défaut
    nICKEL

    MERCI

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

Discussions similaires

  1. [vba excell] info sur toogle button
    Par CIBOOX dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 03/03/2007, 20h26
  2. Réponses: 11
    Dernier message: 26/02/2007, 09h44
  3. [VBA-W] Info sur sélection
    Par Speedrman dans le forum VBA Word
    Réponses: 1
    Dernier message: 12/02/2007, 11h44
  4. blocage pc si recherche info sur type de fichiers
    Par blandinais dans le forum Windows XP
    Réponses: 3
    Dernier message: 04/12/2006, 16h10
  5. [XSL] recherche infos sur xsl:key
    Par luta dans le forum XSL/XSLT/XPATH
    Réponses: 5
    Dernier message: 17/02/2006, 17h23

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