Implementer des zone de liste et requetes

Fermé
jolly212 - 13 juil. 2007 à 13:39
 Utilisateur anonyme - 13 juil. 2007 à 15:17
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.

1 réponse

Utilisateur anonyme
13 juil. 2007 à 15:17
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