[Access] Zone de liste dans un fomulaire
popof60
Messages postés
14
Statut
Membre
-
blux Messages postés 27918 Date d'inscription Statut Modérateur Dernière intervention -
blux Messages postés 27918 Date d'inscription Statut Modérateur Dernière intervention -
Bonjour,
J'ai créé dans un formulaire une zone de liste qui m'affiche l'ensemble de mes numéro de contrat avec dans la propièté contenu
Select Contrats from [n° de contrat]
Lorsque le fomulaire n'est pas filtré tout mes contrats s'affichent mais lorsque je le filtre je veux voir apparaitre dans la zone de liste uniquement les numéros de contrats répondant au filtre.
J'ai essayé toujours dans la proprièté contenu de mettre
Select contrats form [N° de contrat] where "[N° de contrat] = '" & form!contrats_sous_formulaire.[Liste433] & "'"
maiis j'ai toujours tous mes enregistrement qui s'affaiche et pas juste ceux filtrés.
une idée ?
J'ai créé dans un formulaire une zone de liste qui m'affiche l'ensemble de mes numéro de contrat avec dans la propièté contenu
Select Contrats from [n° de contrat]
Lorsque le fomulaire n'est pas filtré tout mes contrats s'affichent mais lorsque je le filtre je veux voir apparaitre dans la zone de liste uniquement les numéros de contrats répondant au filtre.
J'ai essayé toujours dans la proprièté contenu de mettre
Select contrats form [N° de contrat] where "[N° de contrat] = '" & form!contrats_sous_formulaire.[Liste433] & "'"
maiis j'ai toujours tous mes enregistrement qui s'affaiche et pas juste ceux filtrés.
une idée ?
A voir également:
- [Access] Zone de liste dans un fomulaire
- Liste déroulante excel - Guide
- Alternative zone telechargement - Accueil - Outils
- Liste code ascii - Guide
- Liste déroulante en cascade - Guide
- Liste de diffusion whatsapp - Guide
15 réponses
Perso, je ferais en plusieurs phases, pour que la détection de l'erreur soit plus facile, comme ça :
mavar = forms.liste433.Value monsql = "SELECT contrats FROM ma_table_avec_les_contrats WHERE [N° de contrat] = '" & mavar & "'" docmd.runsql monsql
c'est pas faux.
Autre question, comment récupérer le filtre actif d'un formulaire ?
dim valcritere as string
Valcritere = Me.filterON
je suis pas sur du code ...
Autre question, comment récupérer le filtre actif d'un formulaire ?
dim valcritere as string
Valcritere = Me.filterON
je suis pas sur du code ...
Je ne sais pas, mais si tu utilises une zone de liste, tu peux en récupérer la valeur avec zone_de_liste.value... et en plus, tu dis adieu aux filtres...
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
ok, j'ai du alpha numérique dans mon n° de client donc le ' est utile en revanche, juste pour être sur, le code donné doit être rentré en VBA, je ne mets plus rien dans les propiété de la zone de liste.
je suppose aussi qu'il faut déclaré les avriable avec
Dim monsql as ...
dim mavar as ...
non ?
je suppose aussi qu'il faut déclaré les avriable avec
Dim monsql as ...
dim mavar as ...
non ?
C'est normal, runsql veut une requête de type action (mise à jour, suppression...), j'avais mal lu le début de ton problème...
Si tu veux limiter ta zone de liste, alors il faut utiliser la propriété rowsource :
A+ Blux
Si tu veux limiter ta zone de liste, alors il faut utiliser la propriété rowsource :
zone_de_liste.rowsource = monsql--
A+ Blux
"Les cons, ça ose tout. C'est même à ça qu'on les reconnait"
ok donc sa fonctionne .... en partie ... merci
voici le code complet:
Private Sub Liste433_AfterUpdate()
'affichage des enregistrement disponible
Dim Mavar As String
Dim Monsql As String
Mavar = Me!Liste433.Value
Monsql = "SELECT [N° de contrat] FROM contrats WHERE [N° de contrat] = '" & Mavar & "'"
Liste433.RowSource = Monsql
' Rechercher l'enregistrement correspondant au contrôle.
Dim listeform As Object
Set listeform = Me.Recordset.Clone
listeform.FindFirst "[N° de contrat] = '" & Me![Liste433] & "'"
If Not listeform.EOF Then Me.Bookmark = listeform.Bookmark
End Sub
Dans la théorie ma zone de liste doit afficher les n° de contrat des enregistrements dipos puis après (2ème code) je navigue sur mes enregistrements par le biais de la zone de liste
Là je clique sur un enregistrement et les autres dispo ne sa'affiche plus ... si après filtrage de mon formulaire j'ai 3 enregistrements, les 3 n° de contrat devront resté dans la zone de liste pour pouvoir "naviguer" dans mes enregistrement.
voici le code complet:
Private Sub Liste433_AfterUpdate()
'affichage des enregistrement disponible
Dim Mavar As String
Dim Monsql As String
Mavar = Me!Liste433.Value
Monsql = "SELECT [N° de contrat] FROM contrats WHERE [N° de contrat] = '" & Mavar & "'"
Liste433.RowSource = Monsql
' Rechercher l'enregistrement correspondant au contrôle.
Dim listeform As Object
Set listeform = Me.Recordset.Clone
listeform.FindFirst "[N° de contrat] = '" & Me![Liste433] & "'"
If Not listeform.EOF Then Me.Bookmark = listeform.Bookmark
End Sub
Dans la théorie ma zone de liste doit afficher les n° de contrat des enregistrements dipos puis après (2ème code) je navigue sur mes enregistrements par le biais de la zone de liste
Là je clique sur un enregistrement et les autres dispo ne sa'affiche plus ... si après filtrage de mon formulaire j'ai 3 enregistrements, les 3 n° de contrat devront resté dans la zone de liste pour pouvoir "naviguer" dans mes enregistrement.
Monsql = "SELECT [N° de contrat] FROM contrats WHERE [N° de contrat] = '" & Mavar & "'"
Liste433.RowSource = Monsql
y'a comme un souci... Tu choisis une valeur dans une liste et ensuite tu modifies cette même liste !
Je pense que le rowsource doit s'appliquer à ta zone d'afichage et non à ta zone de choix...
Liste433.RowSource = Monsql
y'a comme un souci... Tu choisis une valeur dans une liste et ensuite tu modifies cette même liste !
Je pense que le rowsource doit s'appliquer à ta zone d'afichage et non à ta zone de choix...
En fait il faut que ma liste soit le résultat du champs [n° de client] du filtrage de mon formulaire.
Dans ton formulaire, tu as une zone de liste déroulante et une zone de liste ?
Ta zone de liste déroulante te sert à faire ton choix, et ta zone de liste te sert à afficher les informations après choix...
Ta zone de liste déroulante te sert à faire ton choix, et ta zone de liste te sert à afficher les informations après choix...
Dans mon formulaire je n'ais qu'une zone de liste, je fais mon choix par la commande filtrer par formulaire ...
c'est là que ça va coincer, il serait plus 'opportun' de créer une zone de liste déroulante avec en source un SELECT DISTINCT [N° contrat] FROM...
puis une zone de liste avec n colonnes dont tu remplirais le rowsource après avoir fait ton choix dans la liste déroulante...
puis une zone de liste avec n colonnes dont tu remplirais le rowsource après avoir fait ton choix dans la liste déroulante...
je vais donc tenter avec une liste déroulante.
Juste une chose, peut on créer une table tampon.
Je m'explique en fait dès que j'ai un filtre actif sur mon formulaire je copie tous les enregistrement dans une table tampon ... si le filtre change, j'efface les enregistrement et je copie les nouveaux.
C'est une deuxième solutions mais je ne suis pas sur que cela soit réalisable. le but est ainsi de faire pointer ma zone de liste sur cette table tampon ...
En attendant je test avec la liste déroulante.
Merci
Juste une chose, peut on créer une table tampon.
Je m'explique en fait dès que j'ai un filtre actif sur mon formulaire je copie tous les enregistrement dans une table tampon ... si le filtre change, j'efface les enregistrement et je copie les nouveaux.
C'est une deuxième solutions mais je ne suis pas sur que cela soit réalisable. le but est ainsi de faire pointer ma zone de liste sur cette table tampon ...
En attendant je test avec la liste déroulante.
Merci
tu fait tout sous access ou tu a aussi visual basic?
moi je fait tou sous access et dans les proprietés tu met juste select["le nom de ta requete"]et en dessous
nbre colonnes tu met 2
par contre il faut que ta requete selctionne les deux informations que tu veu
moi je fait tou sous access et dans les proprietés tu met juste select["le nom de ta requete"]et en dessous
nbre colonnes tu met 2
par contre il faut que ta requete selctionne les deux informations que tu veu
Donc voici mon code au complet
Private Sub Liste433_AfterUpdate()
Dim Mavar As String
Dim Monsql As String
Mavar = Form.Liste433.Value
Monsql = "SELECT [N° de contrat] FROM contrats WHERE [N° de contrat] = '" & Mavar & "'"
DoCmd.RunSQL Monsql
j'ai une erreur exécution 2342
"une action Executer sql necessite un argument concistant en une onstruction sql"
Private Sub Liste433_AfterUpdate()
Dim Mavar As String
Dim Monsql As String
Mavar = Form.Liste433.Value
Monsql = "SELECT [N° de contrat] FROM contrats WHERE [N° de contrat] = '" & Mavar & "'"
DoCmd.RunSQL Monsql
j'ai une erreur exécution 2342
"une action Executer sql necessite un argument concistant en une onstruction sql"