[Access] formulaire interactif

Résolu
Utilisateur anonyme -  
blux Messages postés 27121 Date d'inscription   Statut Modérateur Dernière intervention   -
Bonjour à tous,
J'utilise Access 2002 et souhaite faire un formulaire 'intelligent'.
J'ai pas mal cherché, mais je ne crois pas avoir le mot pour exprimer ce que je veux.
Voici quand même ma question :

Je dispose d'une table contenant des infos sur des poissons.
Cette table contient 4 champs : Famille, genre, espece et le nom commun.
Une espèce est comprise dans un genre qui est compris dans une famille.

Dans mon formulaire, j'ai 4 zones de liste déroulantes correspondant à mes 4 champs.
Et je souhaite que quand je choisit une famille, dans la liste déroulante des genres, il n'y ai que les genres de cette famille.
La même chose, lorsque j'ai choisit un genre, dans le menu déroulant, je n'ai que les especes de ce genre dans le menu déroulant espece.

Pour le nom commun, on a une liste des noms communs sans doublon (ça, je sais faire : par l'intermédiaire d'une requête) et si un nom commun est 'commun' à 2 especes, j'aimerais avoir une combobox qui me permette de choisir entre les especes.

J'espère que je suis clair et que quelques personnes puissent m'aider, soit à trouver une solution, soit à me donner quelques pistes...
Mais là, je sèche :-/

Merci de m'avoir lu et au plaisir de vous lire

Hivan de Nouvelle Calédonie

6 réponses

Utilisateur anonyme
 
up ;-)
0
blux Messages postés 27121 Date d'inscription   Statut Modérateur Dernière intervention   3 359
 
Salut,

tu peux t'inspirer de ce qui a été dit ici :

access vba probleme pour recuperer un champ
0
Utilisateur anonyme
 
Hello Blux

Merci pour la piste.

Je regarde et viens donner des nouvelles sur ce poste

@+

Hivan
0
fl0 Messages postés 357 Date d'inscription   Statut Membre Dernière intervention   209
 
salut

tu peut aussi regarder la il y a peut etre un rapport

https://access.developpez.com/sources/temp/?page=frms

dans le paragraphe
Filtrer une liste à partir du choix fait dans une autre
0
Utilisateur anonyme > fl0 Messages postés 357 Date d'inscription   Statut Membre Dernière intervention  
 
Salut fl0,

Merci pour cette autre piste ;-)

Je m'y plonge dès aujourd'hui (pour vous cette nuit) !

@+
0
Utilisateur anonyme
 
Hello,

Bon, ça avance un peu ;-)

Ais-je dit que j'utilise des listes déroulantes ?

voici mon code :

Private Sub Famille_AfterUpdate()
sql = "SELECT DISTINCT [Genre] FROM Domaines_nom_poissons " & _
"WHERE Famille= " & Famille & ";"
Genre.Value = Null
Genre.RowSource = sql
Genre.Requery
End Sub

Lorsque je clique sur le carré gris avec le triangle qui se trouve à gauche de la liste Genre, la fenêtre suivante apparait :

http://imageshack.com/f/b8sanstitregp1j

Et je dois copier la famille des poissons qui se trouve sur fond gris de la fenêtre pour la coller en dessous et cliquer sur OK

Et après, ça marche ;-)

Bon, je suis encore bloqué :-((

Pour rappel, j'ai dans une famille de poisson plusieurs genres...

Merci pour votre aide et bonne journée !

Hivan
0
Utilisateur anonyme
 
J'ai trouver ;-) une petite erreur de guillements !!!

Voici le code qui marche :

Private Sub Famille_AfterUpdate()
sql = "SELECT DISTINCT [Genre] FROM Domaines_nom_poissons " & _
"WHERE Famille= """ & Famille & """;"
Genre.RowSource = sql
Genre.Requery
Genre = Genre.ItemData(0)
End Sub


Je met résolut dès que j'ai tout bien vérifié !!!

@ tout de suite loool

Hivan
0

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

Posez votre question
Utilisateur anonyme
 
Hello,

voici où j'en suis :

Private Sub Famille_AfterUpdate()

sql = "SELECT DISTINCT [Genre] FROM Domaines_nom_poissons " & _
"WHERE Famille = """ & Famille & """ ORDER BY Genre ASC ;"
Genre.RowSource = sql
Genre.Requery
Genre = Genre.ItemData(0)

sql = "SELECT DISTINCT [Espece] FROM Domaines_nom_poissons " & _
"WHERE Genre = """ & Genre & """ ORDER BY Espece ASC ;"
Espece.RowSource = sql
Espece.Requery
Espece = Espece.ItemData(0)


If IsNull(Famille) Then
sql = "SELECT DISTINCT [Nom_commun] FROM Domaines_nom_poissons ORDER BY Nom_commun ASC ;"
Else
sql = "SELECT DISTINCT [Nom_commun] FROM Domaines_nom_poissons " & _
"WHERE Espece = """ & Espece & """ ORDER BY Nom_commun ASC ;"
End If

NomCommun.RowSource = sql
NomCommun.Requery
NomCommun = NomCommun.ItemData(0)
End Sub

Le problème est dans la liste déroulante de Nomcommun :

lorsque j'ouvre mon formulaire, il y a bien les listes de toutes les familles de poisson et de tous les noms communs
si j'ajoute un poisson (et lui donne un nom commun) et que je veux en rajouter une, il n'y a plus que le nom commun du dernier poisson créer...

suis-je clair ?

Bon, je vais me coucher : il est 22h dans la pacifique sud et les moustiques sont de sortie looool

Merci pour votre aide

Hivan
0
Utilisateur anonyme
 
up :-(

Juste une petite piste !
0
blux Messages postés 27121 Date d'inscription   Statut Modérateur Dernière intervention   3 359
 
NomCommun = NomCommun.ItemData(0)
Ca sert à quoi ?

C'est sûrement pour ça que ta liste est limitée...

Un petit conseil en passant, évite les triplages de guillemets, préfère les apostrophes, c'est plus lisible :
sql = "SELECT DISTINCT [Nom_commun] FROM Domaines_nom_poissons " & _
"WHERE Espece = '" & Espece & "' ORDER BY Nom_commun ASC ;" 
--
A+ Blux
 "Les cons, ça ose tout.
C'est même à ça qu'on les reconnait"
0
Utilisateur anonyme
 
Salut Blux,

Merci pour ta réponse ! J'ai bien mis des apostrophes, c'est plus lisible ;-)

NomCommun = NomCommun.ItemData(0)

Ca sert à sélectionner le premier élément de la liste...

en fait, j'ai compris qu'il modifiait la liste de l'enregistrement en cours et du prochain...

J'ai résolut le problème avec :

Private Sub NomCommun_Enter()
sql = "SELECT DISTINCT [Nom_commun] FROM Domaines_nom_poissons ORDER BY Nom_commun ASC ;"
NomCommun.RowSource = sql
NomCommun.Requery
End Sub


Un grand MERCI à toi Blux

C'est fonctionnel comme ça !
0
blux Messages postés 27121 Date d'inscription   Statut Modérateur Dernière intervention   3 359 > Utilisateur anonyme
 
Cool !
0