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 :

[Formulaire]synchronisation dynamique d'un sous-formulaire access


Sujet :

IHM

  1. #1
    Membre à l'essai
    Inscrit en
    Mars 2007
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 20
    Points : 16
    Points
    16
    Par défaut [Formulaire]synchronisation dynamique d'un sous-formulaire access
    Bonjour,

    Les champs pères du formulaire sont trois listes déroulantes qui fournissent les critères de sélection des enregistrements dans une table.

    Je voudrais pouvoir assigner en VBA la chaîne SQL requise dans la propriété Source du sous-formulaire.

    D'avance merci.

  2. #2
    Expert éminent
    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
    Points : 7 759
    Points
    7 759
    Par défaut
    Bonjour,

    voici un petit exemple avec un formlaire ayant
    - une liste déroulante cmbPays (champ associé dans table = Pays)
    - une liste déroulante cmbVille (champ associé dans table = Ville)
    - un sous-formulaire fmDataSheet
    Code vb : 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
    45
    46
    47
    48
    49
    50
    51
    52
    Private Sub cmbPays_AfterUpdate()
    sfmRefresh
    End Sub
     
    Private Sub cmbVille_AfterUpdate()
    sfmRefresh
    End Sub
     
    Private Sub sfmRefresh()
    Dim strCrit1 As String, strCrit2 As String
    Dim strSQL As String, p As Long, strWHERE As String
     
    strCrit1 = Nz(Me.cmbPays, "")
    strCrit2 = Nz(Me.cmbVille, "")
     
    ' Récupérer source du sous-formulaire
    strSQL = Me.fmDataSheet.Form.RecordSource
     
    ' Si pas de SELECT alors Table ou Requête que l'on change
    ' en SELECT * FROM Table/Requête
    If InStr(1, strSQL, "SELECT", vbTextCompare) = 0 Then
        strSQL = "SELECT * FROM " & strSQL
    End If
    ' Si WHERE, l'enlever
    p = InStr(1, strSQL, "WHERE", vbTextCompare)
    If p > 1 Then
       strSQL = Left(strSQL, p - 1)
    End If
    ' Si ; l'enlever
    p = InStr(1, strSQL, ";")
    If p > 1 Then
       strSQL = Left(strSQL, p - 1)
    End If
     
    ' Construire clause WHERE
    If strCrit1 <> "" Then
       If strWHERE <> "" Then strWHERE = strWHERE & " AND "
       strWHERE = strWHERE & "Pays='" & strCrit1 & "'"
    End If
     
    If strCrit2 <> "" Then
       If strWHERE <> "" Then strWHERE = strWHERE & " AND "
       strWHERE = strWHERE & "Ville='" & strCrit2 & "'"
    End If
     
    ' Si Critères, ajouter une clause WHERE
    If strWHERE <> "" Then strSQL = strSQL & " WHERE " & strWHERE
     
    ' Modifier source du sous-formulaire
    Me.fmDataSheet.Form.RecordSource = strSQL
     
    End Sub
    L'évènement après Mise à jour des deux listes déroulante appelle la Sub sfmRefresh() qui modifie le SQL de la source du sous-formulaire.

    Tu peux aussi consulter ce didactitiel : La recherche Multi-critères avec Access par Caféine dont mon code exemple reprend les principes.

    Bonne continuation

Discussions similaires

  1. Réponses: 2
    Dernier message: 06/03/2014, 17h18
  2. [AC-2003] MàJ de sous-formulaires imbriqués à partir d'un sous-formulaire
    Par jeanpierre78 dans le forum IHM
    Réponses: 1
    Dernier message: 20/11/2011, 16h38
  3. [AC-2007] Affichage requete sous formulaire ajout dynamique de champs
    Par gayahel dans le forum VBA Access
    Réponses: 1
    Dernier message: 08/06/2010, 22h32
  4. Réponses: 2
    Dernier message: 02/08/2009, 10h52
  5. Réponses: 2
    Dernier message: 29/11/2008, 17h55

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