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 :

Scruter les tables ouvertes comme si c'était des formes [Toutes versions]


Sujet :

IHM

  1. #1
    Membre éprouvé
    Inscrit en
    Août 2008
    Messages
    740
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 740
    Points : 1 045
    Points
    1 045
    Par défaut Scruter les tables ouvertes comme si c'était des formes
    Bonjour,

    je cherche à faire un recordsetclone, non pas sur une forme, mais sur une table ou une requête ouverte en feuille de données et filtrée
    est ce que c'est possible ?

    en tout cas les tables ouvertes n'apparaissent pas quad on scrute par est ce qu'on peut scruter par un autre objet ?

  2. #2
    Expert confirmé Avatar de nico84
    Homme Profil pro
    Consultant/développeur ERP
    Inscrit en
    Mai 2008
    Messages
    3 087
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Consultant/développeur ERP
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 3 087
    Points : 5 203
    Points
    5 203
    Par défaut
    Bonjour,

    Je ne comprends pas bien la question car "table ouverte" cela ne veut pas dire grand chose... Toutes les tables de la base sont accessibles en lecture/écriture, qu'elles soient affichées à l'écran ou non.

    Il suffit pour cela d'ouvrir un recordset
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Dim rst as DAO.recordset
    set rst=currentdb.openrecordset "select * from matable"
    ...
    Utilisez Planet, gestion d'entreprise gratuite pour TPE / PME

  3. #3
    Membre éprouvé
    Inscrit en
    Août 2008
    Messages
    740
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 740
    Points : 1 045
    Points
    1 045
    Par défaut
    Merci de ta réponse, je me suis mal exprimé:

    ce que je souhaite
    - je clic sur une table quelconque, elle s'affiche en feuille de données comme d'hab
    - je réalise des filtres sur les en têtes de colonnes, les données sont automatiquement filtrées… ok

    alors que cette fenêtre est toujours ouverte, je souhaiterais un code VBA qui récupère la clause SQL de ces filtres (par exemple WHERE CODEARTICLE LIKE 'GG*'), que je puisse récupérer l'info et l'utiliser par ailleurs
    En fait, ce code doit scruter les fenêtres ouvertes et en extraire le filtre en texte.

    je sais le faire en ouvrant une 'FORME' en mode feuille de données, mais pas en ouvrant une 'TABLE', d'où ma question

  4. #4
    Membre éprouvé
    Inscrit en
    Août 2008
    Messages
    740
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 740
    Points : 1 045
    Points
    1 045
    Par défaut
    Je viens de voir qu'on pouvait récupérer la liste des tables ouvertes… mais comment en récupérer le filtre s'il y en a un ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Public Function AllTables()
    Dim obj As AccessObject, dbs As Object
    Set dbs = Application.CurrentData
    For Each obj In dbs.AllTables
        If obj.IsLoaded = True Then
            Debug.Print obj.Name & " " & obj.Type
         End If
    Next obj
    End Function

  5. #5
    Expert confirmé Avatar de nico84
    Homme Profil pro
    Consultant/développeur ERP
    Inscrit en
    Mai 2008
    Messages
    3 087
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Consultant/développeur ERP
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 3 087
    Points : 5 203
    Points
    5 203
    Par défaut
    Je comprends mieux. Il y a bien un objet CurrentData.AllTables("matable") mais je ne sais pas comment explorer ses propriétés.

    Quand on le ferme il propose de sauver quelque part une partie du formatage donc il doit y avoir moyen de le retrouver mais je ne sais pas où...
    Utilisez Planet, gestion d'entreprise gratuite pour TPE / PME

  6. #6
    Membre actif
    Homme Profil pro
    Retraité
    Inscrit en
    Février 2012
    Messages
    284
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Bâtiment

    Informations forums :
    Inscription : Février 2012
    Messages : 284
    Points : 284
    Points
    284
    Par défaut
    Bonjour,
    peut-être en cherchant dans les contraintes des champs de la table ?
    Un travail qui plait est à moitié fait.

  7. #7
    Membre actif
    Homme Profil pro
    Retraité
    Inscrit en
    Février 2012
    Messages
    284
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Bâtiment

    Informations forums :
    Inscription : Février 2012
    Messages : 284
    Points : 284
    Points
    284
    Par défaut
    Je viens de trouver ça mais il faut fermer la table pour que le filtre se mette à jour et s'enregistre dans la propriété Filter de la table.

    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
    'List table properties.
    Sub exaProperties()
    Dim db As Database
    Dim tbl As TableDef
    Dim prp As Property
     
        Set db = CurrentDb
        Set tbl = db!TableName
     
        For Each prp In tbl.Properties
            If prp.Name = "Filter" Then
                Debug.Print prp.Name
                Debug.Print prp.Value
                Debug.Print prp.Type
                Debug.Print prp.Inherited
            End If
        Next prp
        Debug.Print tbl.Properties.Count
    End Sub
    Un travail qui plait est à moitié fait.

  8. #8
    Membre éprouvé
    Inscrit en
    Août 2008
    Messages
    740
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 740
    Points : 1 045
    Points
    1 045
    Par défaut
    Merci beaucoup Tortille, c'est exactement ce que je cherchais
    en effet la propriété ne se met pas à jour en temps réel, mais il n'y a pas besoin de fermer la table, on peut juste faire une sauvegarde
    en rajoutant un Docmd.Save au début de la procédure que tu m'a fourni

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 16/07/2018, 04h31
  2. Réponses: 1
    Dernier message: 19/02/2018, 10h58
  3. Réponses: 0
    Dernier message: 06/02/2018, 22h03
  4. Fermer toutes les tables ouvertes
    Par jnmab dans le forum VBA Access
    Réponses: 2
    Dernier message: 09/09/2010, 14h34
  5. Pourquoi les tables sont ouvertes par défaut ?
    Par Cazaux-Moutou-Philippe dans le forum WinDev
    Réponses: 1
    Dernier message: 21/10/2006, 22h16

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