[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   -
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 ?
A voir également:

15 réponses

ruzakruzak Messages postés 459 Statut Membre 247
 
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

1
popof60 Messages postés 14 Statut Membre
 
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 ...
1
blux Messages postés 27918 Date d'inscription   Statut Modérateur Dernière intervention   3 364
 
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...
1
blux Messages postés 27918 Date d'inscription   Statut Modérateur Dernière intervention   3 364
 
salut,

et si N° contrat est numérique, alors pas de
"'"
...
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
popof60 Messages postés 14 Statut Membre
 
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 ?
0
blux Messages postés 27918 Date d'inscription   Statut Modérateur Dernière intervention   3 364
 
String et String...
0
fl0 Messages postés 365 Statut Membre 209
 
salut les gars
moi aussi g un probleme avec les liste dans access
quelqu'un peut me dire comment ouvrir une dicussion
merci
0
blux Messages postés 27918 Date d'inscription   Statut Modérateur Dernière intervention   3 364 > fl0 Messages postés 365 Statut Membre
 
Tu vas dans le forum approprié, et tu remplis les champs en fin de page : écrire un nouveau message...
0
blux Messages postés 27918 Date d'inscription   Statut Modérateur Dernière intervention   3 364
 
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 :
zone_de_liste.rowsource = monsql
--
A+ Blux
 "Les cons, ça ose tout.
C'est même à ça qu'on les reconnait"
0
popof60 Messages postés 14 Statut Membre
 
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.
0
blux Messages postés 27918 Date d'inscription   Statut Modérateur Dernière intervention   3 364
 
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...
0
popof60 Messages postés 14 Statut Membre
 
oui je suis d'accord mais comment faire ???
0
popof60 Messages postés 14 Statut Membre
 
En fait il faut que ma liste soit le résultat du champs [n° de client] du filtrage de mon formulaire.
0
blux Messages postés 27918 Date d'inscription   Statut Modérateur Dernière intervention   3 364
 
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...
0
popof60 Messages postés 14 Statut Membre
 
Dans mon formulaire je n'ais qu'une zone de liste, je fais mon choix par la commande filtrer par formulaire ...
0
blux Messages postés 27918 Date d'inscription   Statut Modérateur Dernière intervention   3 364
 
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...
0
popof
 
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
0
blux Messages postés 27918 Date d'inscription   Statut Modérateur Dernière intervention   3 364 > popof
 
Quel est l'intérêt de créer une table temporaire ? A part perdre du temps dans sa gestion...
0
fl0 Messages postés 365 Statut Membre 209
 
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
-1
popof60 Messages postés 14 Statut Membre
 
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"
-1