Implementer des zone de liste et requetes

jolly212 -  
 Utilisateur anonyme -
BJR, nouveau dans access.
je voudrais creer un formulaire qui va me permettre de creer mes requettes
j'ai 10 colonnes et j'ai des combinaisons diferentes de requettes possibles.

Je voudrais que dans mon formulaire j'ai une zone de liste qui me propose en choix les titre des colonnes
et si je choisisun titre dans cette liste, une nouvelle liste aparait à coté et au fur et à mesure je crée mes requettes.

Si je choisi dans dans 5 zones de liste A, B, C,D,E, ma requette sera de presenter les colonnes A,B,C,D,E.

Donc domment, incrementer à chaque choix une nouvelle zone de liste.
Configuration: Windows 2000
Internet Explorer 6.0

1 réponse

  1. Utilisateur anonyme
     
    Bonjour,

    Je puis vous suggérer une méthode qui consiste à modifier vos requêtes par programmation VBA !

    Cette astuce est tiré d'un bouquin sur VBA Access 97, mais une fois intégré c'est géant :-)

    Voici la fonction maitresse :

    Public Function ChangeRequeteDef(ChaineRequete As String, ChaineSQL As String) As Boolean
        
        Dim Definition As QueryDef
        
        If ((ChaineRequete = "") Or (ChaineSQL = "")) Then
            ChangeRequeteDef = False
        Else
            Set Definition = CurrentDb.QueryDefs(ChaineRequete)
            Definition.SQL = ChaineSQL
            Definition.Close
            RefreshDatabaseWindow
            ChangeRequeteDef = True
        End If
        
    End Function
    


    Donc ici 2 paramètres a greffer :

    [ ChaineRequete ], soit le nom de la requête a modifier.
    [ ChaineSQL ], soit la requête elle même exprimer en texte.

    Le nom de la requête est relativement simple a identifier, soit
    par variable, soit par constante.

    ex:

    Public Const Requete_Titre = "Requête par Titre"
    


    Pour la chaine SQL, c'est plus tordu, il faut décomposer la requête par
    concaténation, voici ce que ça donne :

    Private Sub Liste_Cassette_AfterUpdate()
        
        Dim Chaine As String
        Dim Critere As String
        Dim CassetteVidéo As String
        
    On Error GoTo Liste_Cassette_Err
    
        ' Capture du numéro de la cassette vidéo
        CassetteVidéo = Forms![Formulaire Édition Liste Vidéo].[Liste Cassette]
        ' Fabrication de la requête SQL sous forme de texte par concaténation
        Chaine = "Select * from [Table Vidéo] where [Cassette] = "
        Critere = Chaine & """" & CassetteVidéo & """"
        
        ' Appel à la fonction de modification de requête
        If (ChangeRequeteDef("Requête Liste Spécifique Cassette", Critere)) Then
            DoCmd.OpenForm "Formulaire Liste Spécifique Édition Cassette", acNormal, "", "[Cassette]", , acNormal
        End If
    
    Liste_Cassette_Exit:
        Exit Sub
    
    Liste_Cassette_Err:
        MsgBox Error$
        Resume Liste_Cassette_Exit
    
    End Sub
    '
    


    Avec ça tu devrais avoir a t'amuser si l'orientation t'intéresse.

    Lupin
    0