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

Contribuez Discussion :

Construisez un formulaire afin de lister TOUTES (Ctr, Form, etc) les instructions SQL +Filtrer +Modifier


Sujet :

Contribuez

  1. #1
    Membre régulier
    Homme Profil pro
    Inscrit en
    Janvier 2012
    Messages
    39
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Secteur : Santé

    Informations forums :
    Inscription : Janvier 2012
    Messages : 39
    Points : 80
    Points
    80
    Par défaut Construisez un formulaire afin de lister TOUTES (Ctr, Form, etc) les instructions SQL +Filtrer +Modifier
    [Ac-2002 et DAO] Voici une source CBO pour voir TOUTES les requêtes et instructions SQL IHM (sauf les SQL VBA)
    (à tester sur les autres versions Access svp)

    Préfixes des requêtes listées dans le cbo:
    • ~sq_c =Requêtes des contrôles (sous forme ~sq_cNOMDUFORM_ETAT~sq_cNOMDUCONTROLE)
    • ~sq_d =Sous-formulaires champs pères champ fils
    • ~sq_f =Requêtes sources des formulaires
    • ~sq_r =Requêtes sources des états
    • <sans> =Querydefs Ordinaires


    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
    Function ListeQuery(oCBO As Control, num As Long, lNumLigne As Long, lNumCol As Long, iDAppel As Integer)
    On Error GoTo Faute
    Dim db as DataBase, oQdf As QueryDef 'correction
    Static sCol() As String, i As Integer
    Set db = CurrentDb
    Select Case iDAppel
     Case acLBInitialize
       i = 0
       ReDim sCol(db.QueryDefs.Count)
       For Each oQdf In db.QueryDefs
          sCol(i) = oQdf.Name
          i = i + 1
       Next oQdf
       ListeQuery = True     '--------------------fin-Initialisation--------------------------------
     Case acLBOpen
       ListeQuery = timer
     Case acLBGetRowCount             'nbr de lignes
       ListeQuery = i
     Case acLBGetColumnCount
       ListeQuery = 1                  'nbr de colonnes
     Case acLBGetColumnWidth
       ListeQuery = -1                 'largeur colon
     Case acLBGetValue
       ListeQuery = sCol(lNumLigne)    'Select Case lNumCol Case 0 à n-1 si plusieurs colonnes.
     Case LB_END
       ReDim sCol(0)
    End Select
    Set oQdf = Nothing
    Exit Function
    Faute:
      Resume sortieLst
    sortieLst:
      On Error Resume Next
      Set oQdf = Nothing
      Set db = Nothing
      ListeQuery = False
      Exit Function
    End Function
    Élémentaire mon cher Einstein

    Pour faire une recherche de mot(s) dans toutes ces requêtes : utilisez un contrôle "Mot à rechercher" pour alimenter le filtre "sMotaRechercher" et modifiez la partie initialisation de la procédure précédente.
    Ainsi votre CBO n'affichera plus que les requêtes ordinaires, contrôles, formulaires et états contenant une expression SQL contenant elle même le mot recherché.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    Dim sMotaRechercher as string
    ...
     sMotaRechercher =nz(Me...
    ...
      i = 0
      For Each oQdf In db.QueryDefs
        if instr(1,oQdf.sQl,sMotaRechercher) then
            ReDim Preserve sCol(i)
            sCol(i) = oQdf.Name
          i = i + 1
        endif
      Next oQdf
    Pour visualiser chaque expression SQL: créez un contrôle texte indépendant [StringSql], grand et vide et sur événement après mise à jour du CBO
    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
    Private Sub cboQuery_AfterUpdate()
    On Error GoTo Err_SQL
      Dim db as DAO.database, oSQL As DAO.QueryDef, sNomSQL As String
      sNomSQL = Nz(Me![cboQuery])
      If Len(sNomSQL) > 3 Then  
        Set db = CurrentDb
        Set oSQL = db.QueryDefs(sNomSQL)
        Me![StringSql] = oSQL.sQl
      End If
      Set db = Nothing
      Set oSQL = Nothing
      Exit Sub
    Err_SQL:
        MsgBox err.Description, , "  Err n°" & CStr(err)
        Exit Sub
    End Sub
    et pour mettre à jour le SQl utilisez un cmdControl (à vos risques et périls)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    oSQL.sQl = Me.[StringSql]
    MAIS SEULEMENT LES REQUÊTES ENREGISTREES SERONT MODIFIEES (les requêtes contrôles, formulaires, états sont en lecture seule et il ne faut surtout pas essayer de les modifier de cette façon. Editez le Form/Etat/Contrôle pour en modifier la source SQL. )

    Après, à vous de peaufiner le formulaire
    Exemple :visualiser l'effet du filtre (via lune étiquette : etNbrQuery).:
    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
     Case acLBInitialize
      i = 0
      If sMotaRechercher = "" Then
        ReDim sCol(db.QueryDefs.Count)
        For Each oQdf In db.QueryDefs
           sCol(i) = oQdf.Name
           i = i + 1
        Next oQdf
      Else
        For Each oQdf In ldb.QueryDefs
          If InStr(1, oQdf.sQl, sMotaRechercher) Then
            ReDim Preserve sCol(i)
            sCol(i) = oQdf.Name
            i = i + 1
          End If
        Next oQdf
      End If
      Me.etNbrQuery.Caption = i
    ListeQuery = True
    Ou encore :permettre une recherche multicritères, gérer un espace final dans la saisie du filtre (ici systématiquement effacé).

    Voila un des onglets de mon formulaire d'administration
    Alain.

  2. #2
    Membre expert
    Avatar de alassanediakite
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2006
    Messages
    1 599
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Mali

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2006
    Messages : 1 599
    Points : 3 590
    Points
    3 590
    Billets dans le blog
    8
    Par défaut
    Salut et grand
    CBO???
    Un demo avec un fichier ACCESS évitera beaucoup de mots et de maux!!! Élémentaire mon cher Watson!
    Le monde est trop bien programmé pour être l’œuvre du hasard…
    Mon produit pour la gestion d'école: www.logicoles.com

Discussions similaires

  1. Lister toutes les clés étrangères de toutes le tables
    Par Samish dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 30/08/2005, 10h15
  2. lister tout les modules installer de perl
    Par black_code dans le forum Modules
    Réponses: 6
    Dernier message: 05/08/2005, 18h20
  3. Formulaire qui se valide tout seul :8O:
    Par Boumeur dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 13/04/2005, 12h21
  4. [firebird 1.5] lister toutes les tables
    Par c0rwyn dans le forum SQL
    Réponses: 2
    Dernier message: 02/09/2004, 14h36
  5. Réponses: 8
    Dernier message: 17/10/2002, 12h52

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