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

IHM Discussion :

regrouper le nom des tables dans une liste déroulante?


Sujet :

IHM

  1. #1
    Membre du Club
    Étudiant
    Inscrit en
    Juin 2007
    Messages
    85
    Détails du profil
    Informations personnelles :
    Âge : 35

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2007
    Messages : 85
    Points : 47
    Points
    47
    Par défaut regrouper le nom des tables dans une liste déroulante?
    Bonjour à tous, Je voudrai savoir si il est possible de répertorier le nom des différentes tables afin de créer une liste déroulante les comportant, en fait je voudrai par simple selection dans cette liste pour afficher les enregistrements de la table choisie.
    C'est possible? Si oui comment car je penser creer une nouvel table avec le nom des autres tables comme enregistrement mais sa ne me convient pas car j'ai une autre liste déroulante qui agit suivant le choix de la première.

    Merci d'avance....

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour

    Dans ce tuto sur DAO tu auras toutes les infos.

    Starec

  3. #3
    Membre du Club
    Étudiant
    Inscrit en
    Juin 2007
    Messages
    85
    Détails du profil
    Informations personnelles :
    Âge : 35

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2007
    Messages : 85
    Points : 47
    Points
    47
    Par défaut
    J'ai compri le prince de cette parti de code mais je ne comprend pas quand il se met en route (il n'est pas dans la fonction d'un bouton ou autre) et je ne sais pas à quoi correspond le nom de la table à qui je cherche la propriété nom. Peux tu m'en dire un peu plus STP?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Public Function ExistProperty(ColTProperties As DAO.Properties, _
     strTNom As String) As Boolean
    Dim oTmpPrp As DAO.Property
    For Each oTmpPrp In ColTProperties
     If oTmpPrp.Name = strTNom Then
      ExistProperty = True
      Exit For
     End If
    Next oTmpPrp
    End Function

  4. #4
    Invité
    Invité(e)
    Par défaut
    Bonjour

    Voici un exemple de code que je viens de faire, pour t'aiguiller car tu es parti de travers.

    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
    Private Sub cboListeTables_GotFocus()
        ' ===== liste des tables =====
        Dim tdf As DAO.TableDef
        Dim fld As DAO.Field
        Dim strRowSource As String ' pour stocker les noms des tables
     
        For Each tdf In CurrentDb.TableDefs
            If Left(tdf.Name, 4) = "MSys" Then
            Else
                strRowSource = strRowSource & ";" & tdf.Name
            End If
        Next tdf
     
        With Me.cboListeTables
            .RowSourceType = "Liste valeurs"
            .RowSource = strRowSource
        End With
     
     
    End Sub
    Dans un formulaire tu mets une combobox (liste déroulante) que tu appelles : cboListeTables, et sur l'évènement GotFocus tu dois mettre le code.
    De plus n'oublie de réferencer Microsoft DAO 3.6 Object Library.

    Je viens de le tester sur ma base en cours c'est type top.
    Starec

  5. #5
    Membre du Club
    Étudiant
    Inscrit en
    Juin 2007
    Messages
    85
    Détails du profil
    Informations personnelles :
    Âge : 35

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2007
    Messages : 85
    Points : 47
    Points
    47
    Par défaut
    j'ai fait ce que tu ma dis mais le l'evenement GotFocus correspond bien à "reception focus" non? car il me lance un débogage avec la ligne de la fonction surligné en jaune --> Private Sub cboListeTables_GotFocus()
    et le met une msgbox --> erreur de compilation membre de methode ou de donnée introuvable. Je quoi que sa vient de l'appel de la fonction car le tien est different à celui de l'événement "reception focus". Tu en pense quoi?

  6. #6
    Invité
    Invité(e)
    Par défaut
    Bonjour

    On reprend, tu mets ton contrôle sur ton formulaire, tu l'appel comme je t'ai dit (dans les propriétés Onglet/Autres/Nom)

    Ensuite tu vas sur l'onglet Evénement et tu te mets sur "Sur Récpetion Focus", là tu choisis Précédure événementielle, et tu dois avoir l'éditeur VBE qui s'ouvre, et tu dois voir:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub cboListeTables_GotFocus()
     
    End Sub
    Et entre ces deux lignes de codes tu mets
    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
        ' ===== liste des tables =====
        Dim tdf As DAO.TableDef
        Dim fld As DAO.Field
        Dim strRowSource As String ' pour stocker les noms des tables
     
        For Each tdf In CurrentDb.TableDefs
            If Left(tdf.Name, 4) = "MSys" Then
            Else
                strRowSource = strRowSource & ";" & tdf.Name
            End If
        Next tdf
     
        With Me.cboListeTables
            .RowSourceType = "Liste valeurs"
            .RowSource = strRowSource
        End With
    pour arriver au code que je t'ai mis.

    Starec

  7. #7
    Membre du Club
    Étudiant
    Inscrit en
    Juin 2007
    Messages
    85
    Détails du profil
    Informations personnelles :
    Âge : 35

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2007
    Messages : 85
    Points : 47
    Points
    47
    Par défaut
    désolé si je te prend la tête, je suis novice dans ce domaine.
    Tous ce que tu ma dis je l'est fait mais le problème c'est que la fonction s'appel -->"Private Sub Ctl_cboListeTables_GotFocus()" lorsque je choisi "génerer le code" puis il m'affiche l'erreur que je t'est sitée.
    (encore désolé pour le dérengement)

  8. #8
    Invité
    Invité(e)
    Par défaut
    Re

    J'ai le code sous les yeux, et cela fonctionne parfaitement.

    Mets le code, avec du Private au End Sub sur le forum, le tien pas le mien.

    Starec

  9. #9
    Membre du Club
    Étudiant
    Inscrit en
    Juin 2007
    Messages
    85
    Détails du profil
    Informations personnelles :
    Âge : 35

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2007
    Messages : 85
    Points : 47
    Points
    47
    Par défaut
    j'ai fait exactement ce que tu ma dis:

    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
    Private Sub Ctl_cboListeTables_BeforeUpdate(Cancel As Integer)
    ' ===== liste des tables =====
        Dim tdf As DAO.TableDef
        Dim fld As DAO.Field
        Dim strRowSource As String ' pour stocker les noms des tables
     
        For Each tdf In CurrentDb.TableDefs
            If Left(tdf.Name, 4) = "MSys" Then
            Else
                strRowSource = strRowSource & ";" & tdf.Name
            End If
        Next tdf
     
        With Me.cboListeTables
            .RowSourceType = "Liste valeurs"
            .RowSource = strRowSource
        End With
    End Sub

  10. #10
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par olodin
    j'ai fait exactement ce que tu ma dis:

    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
    Private Sub Ctl_cboListeTables_BeforeUpdate(Cancel As Integer)
    ' ===== liste des tables =====
        Dim tdf As DAO.TableDef
        Dim fld As DAO.Field
        Dim strRowSource As String ' pour stocker les noms des tables
     
        For Each tdf In CurrentDb.TableDefs
            If Left(tdf.Name, 4) = "MSys" Then
            Else
                strRowSource = strRowSource & ";" & tdf.Name
            End If
        Next tdf
     
        With Me.cboListeTables
            .RowSourceType = "Liste valeurs"
            .RowSource = strRowSource
        End With
    End Sub
    Non, tu n'as pas fait ce que je t'ai dit, tu as nommé ton contrôle "Ctl_cboListeTables", or je n'ai jamais mis Ctl.

    Reprend la précédure que je t'ai donnée étape par étape et nomme bien la combobox "cboListeTables"

    Starec

    PS : Pense à mettre les balises codes, je viens de faire la modif

  11. #11
    Membre du Club
    Étudiant
    Inscrit en
    Juin 2007
    Messages
    85
    Détails du profil
    Informations personnelles :
    Âge : 35

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2007
    Messages : 85
    Points : 47
    Points
    47
    Par défaut
    je crois qu'on ne parle pas de la même chose j'ai crée une zone de liste déroulante esque c'est sa que tu appel une combobox, si oui j'ai fait ce que tu m'as dis est lorsque j'affiche le code conserant l'événement " sur reception focus" il m'affiche ....Ctl_cboListeTables_BeforeUpdate ....

  12. #12
    Invité
    Invité(e)
    Par défaut
    Re

    Je parle bien d'une liste déroulante, une liste qui se déroule lorsque tu cliques sur la flêche à droite.

    Je ne comprens pas le Ctl, ce n'est pas Access qui le met.
    Lorsque tu sélectionnes sur l'évènements Réception Focus tu dois tombé sur GotFocus.

    Dans ton code tu es sur BeforeUpdate (Avant mise à jour) qui est l'évènement par défaut.

    Tu n'as pas suivi la manip à la lettre.
    Je viens de la refaire excatement comme je te l'ai écrit, et nickel.

    Starec

  13. #13
    Membre du Club
    Étudiant
    Inscrit en
    Juin 2007
    Messages
    85
    Détails du profil
    Informations personnelles :
    Âge : 35

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2007
    Messages : 85
    Points : 47
    Points
    47
    Par défaut
    escuse je vien de le refaire 2 fois et c bon maintenant sa fonctionne.
    désolé de t'avoir importuné, je croi que t'avai bien vu que je n'y serais jamais arrivé tous seul.
    Encore merci et peut etre à bientot sur un forum (si bien tu ne devient pas alergique à mon speudo)

  14. #14
    Membre du Club
    Étudiant
    Inscrit en
    Juin 2007
    Messages
    85
    Détails du profil
    Informations personnelles :
    Âge : 35

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2007
    Messages : 85
    Points : 47
    Points
    47
    Par défaut
    encore un dernier petit truc (pour finir de t'achever), esqu'il est possible de supprimer dans cette liste des champs spécifiques????

  15. #15
    Invité
    Invité(e)
    Par défaut
    Re

    C'est une liste de table et non de champs, je ne comprends pas ?

    Starec

  16. #16
    Membre du Club
    Étudiant
    Inscrit en
    Juin 2007
    Messages
    85
    Détails du profil
    Informations personnelles :
    Âge : 35

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2007
    Messages : 85
    Points : 47
    Points
    47
    Par défaut
    dans cette liste déroulante est-il possible d'enlever certaines données (si g dans la liste Client,Fournisseur par exemple esque je peut enlever Frounisseur de la liste déroulante?)

  17. #17
    Invité
    Invité(e)
    Par défaut
    Re

    Oui, dans le code j'ai enlevé les tables Systèmes
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If Left(tdf.Name, 4) = "MSys"
    en prenant les 4 premières lettres du nom de ces tables.

    Tu peux par exemple faire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If Left(tdf.Name, 4) = "MSys" or tdf.Name = "Fournisseur"
    Starec

  18. #18
    Membre du Club
    Étudiant
    Inscrit en
    Juin 2007
    Messages
    85
    Détails du profil
    Informations personnelles :
    Âge : 35

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2007
    Messages : 85
    Points : 47
    Points
    47
    Par défaut
    niquel merci.
    merci pour ton aide starec. je me suis cassé les dans dessus ( ) pendant une semaine et en quelque messages avec toi tout va mieu.
    tu gère

  19. #19
    Invité
    Invité(e)
    Par défaut
    Je ne gère pas, mais 6 ans de programmation sous Access, et c'est mon métier, je suis programmeur Access et Excel tout en VBA, mais j'en apprends encore tous les jours, et ce n'est pas fini.

    A +

    Starec

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

Discussions similaires

  1. [AC-2007] Changer le nom des attributs dans une liste déroulante
    Par Razorback dans le forum IHM
    Réponses: 8
    Dernier message: 17/04/2009, 12h04
  2. [MySQL] Je n'arrive pas à afficher le nom de mes tables dans une liste déroulante
    Par beegees dans le forum PHP & Base de données
    Réponses: 6
    Dernier message: 08/10/2008, 15h16
  3. Récupérer l'alias ou le nom des tables dans une jointure
    Par Morgoth777 dans le forum ASP.NET
    Réponses: 3
    Dernier message: 03/07/2008, 10h45
  4. Réponses: 5
    Dernier message: 11/07/2007, 16h03
  5. Réponses: 3
    Dernier message: 22/03/2006, 17h24

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