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 :

liste des tables via DAO [AC-2003]


Sujet :

VBA Access

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2012
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2012
    Messages : 4
    Par défaut liste des tables via DAO
    Bonjour,

    Je souhaite créer une liste déroulante reprenant la liste de certaines tables de la base en fonction de la valeur d'une variable

    la variable Me.var (=A1 ou =A2 ou =A3) passe bien (testé avec msgbox)
    Les UCase Left et Right passent bien (testé avec msgbox)

    Et pourtant, la condition ne passe pas : le code liste toutes les tables et duplique celles qui remplissent la conditions

    Auriez-vous une idée ?
    Merci,
    Cdt,


    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
     
    Private Sub Listederoulante_AfterUpdate()
     
      Dim db As DAO.Database, tdf As DAO.TableDef
      Dim nmt As String
     
      Set db = CurrentDb
     
    If Me.var = "A1" Then
      For Each tdf In db.TableDefs
            If (UCase(Left(tdf.Name, 2)) = "WS" And UCase(Right(tdf.Name, 1)) = "D") Then
              Me.tbl_source.AddItem tdf.Name
            End If
      Next tdf
      Set db = Nothing
    End If
     
    If Me.var = "A2" Then
      For Each tdf In db.TableDefs
          If (UCase(Left(tdf.Name, 2)) = "BS" And UCase(Right(tdf.Name, 1)) = "D") Then
             Me.tbl_source.AddItem tdf.Name
          End If
      Next tdf
      Set db = Nothing
    End If
     
    If Me.var = "A3" Then
      For Each tdf In db.TableDefs
            If (UCase(Left(tdf.Name, 2)) = "BM" And UCase(Right(tdf.Name, 1)) = "D") Then
                Me.tbl_source.AddItem tdf.Name
          End If
      Next tdf
      Set db = Nothing
    End If
     
    End Sub

  2. #2
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2012
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2012
    Messages : 4
    Par défaut
    Je me permet de répondre à mon propre message car j'ai trouvé la solution donc si ça peut aider :

    une première liste déroulante va permettre de vider la seconde :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Private Sub I1_AfterUpdate()
        Me.tbl_source.RowSource = ""
    End Sub
    La seconde va se mettre à jour comme suit :

    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
     
     
    Private Sub tbl_source_Enter()
     
      Dim db As DAO.Database
      Dim tdf As DAO.TableDef
     
    Set db = CurrentDb
     
    If Me.I1= "A1" Then
      For Each tdf In db.TableDefs
          If (UCase(Left(tdf.Name, 2)) = "WS" And UCase(Right(tdf.Name, 1)) = "D") Then
              Me.tbl_source.AddItem tdf.Name
          End If
      Next tdf
    End If
     
    If Me.I1= "A2" Then
      For Each tdf In db.TableDefs
          If (UCase(Left(tdf.Name, 2)) = "BM" And UCase(Right(tdf.Name, 1)) = "D") Then
              Me.tbl_source.AddItem tdf.Name
          End If
      Next tdf
    End If
     
    If Me.I1= "A3" Then
      For Each tdf In db.TableDefs
          If (UCase(Left(tdf.Name, 2)) = "BS" And UCase(Right(tdf.Name, 1)) = "D") Then
              Me.tbl_source.AddItem tdf.Name
          End If
      Next tdf
    End If
    Set db = Nothing
    End Sub
    L'évènement déclenchant n'était pas le bon...

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

Discussions similaires

  1. Obtenir le listing des tables d'une BDD
    Par zoubidaman dans le forum Outils
    Réponses: 1
    Dernier message: 10/11/2004, 00h17
  2. liste des tables d'une BDD
    Par 120 dans le forum ASP
    Réponses: 4
    Dernier message: 21/06/2004, 14h06
  3. liste des tables par base
    Par rupert dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 03/05/2004, 09h38
  4. Obtenir la liste des tables
    Par edamiral dans le forum PostgreSQL
    Réponses: 5
    Dernier message: 23/04/2004, 13h33
  5. Liste des tables d'une bases de données spécifique
    Par faridos23 dans le forum Requêtes
    Réponses: 3
    Dernier message: 26/08/2003, 22h20

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