Access choisir les champs affiche par du code

Résolu/Fermé
metalque89 Messages postés 33 Date d'inscription mercredi 3 octobre 2007 Statut Membre Dernière intervention 18 novembre 2008 - 4 mars 2008 à 11:43
metalque89 Messages postés 33 Date d'inscription mercredi 3 octobre 2007 Statut Membre Dernière intervention 18 novembre 2008 - 26 mars 2008 à 14:19
Bonjour,

Je dispose de 2 tables appelees "Groupe" et "Produit".
Ma table "Groupe" possede un champs Nom de type texte et 4 champs de type oui/non qui correspondent a des caracteristiques. Pour chaque enregistrement, je coche les champs qui definissent les caracteristiques de chaque groupe.
Exemple:
                   Nom                  Longueur      Largeur     Hauteur      Rayon
                    cube                    oui         oui         oui          non
                  cylindre                  non         non         oui          oui


Pour ma table "Produit", je possede un champs Nom_Produit et Nom_Groupe de type texte et les 4 meme champs de type oui/non.
Exemple:
                 cube1                    12             12           12        null      
               cylindre1                 null           null          25          9    


Tous les produits de meme type ont les memes caracteristiques.
Exemple: si j'ai 2 produits du groupe "cylindre", ils ont tout les 2 une hauteur et un rayon mais pas de longueur ni de largeur

J'aimerais creer un formulaire ou une requete qui lorsque je selectionne un produit, ne m'affiche que les champs de valeur "oui", le tout sans creer un formulaire pour chaque groupe.
Exemple:

Si je selectionne cube1,
                    Nom_Produit         Longueur         Largeur       Hauteur
                      cube1                12              12            12

Si je selectionne cylindre1,
                    Nom_Produit          Hauteur          Rayon
                     cylindre1              25               9    

J'espere avoir ete assez clair. Quelqu'un a t'il une idee pour resoudre mon casse tete?

Merci de votre aide.

PS: Desole pour les "e sans accent", j'ai un clavier QWERTY
A voir également:

3 réponses

Frappe Misere Messages postés 2677 Date d'inscription vendredi 22 février 2008 Statut Membre Dernière intervention 10 août 2011 568
4 mars 2008 à 11:51
utilise dans une fonction :
Me![nom_du_champ].Visible = True (ou false)
à toi d'écrire la ou les conditions.
0
metalque89 Messages postés 33 Date d'inscription mercredi 3 octobre 2007 Statut Membre Dernière intervention 18 novembre 2008 2
4 mars 2008 à 13:28
Merci de ton aide,

justement, comment ecrirais-tu

If "rayon de cube1 = null" then ...?
0
LatelyGeek Messages postés 1758 Date d'inscription vendredi 4 janvier 2008 Statut Membre Dernière intervention 5 janvier 2023 550
4 mars 2008 à 20:27
Si j'ai bien compris, tu écrirais juste

If Me!Rayon = Null Then
Me!Rayon.visible=False
Else
Me!Rayon.Visible=True
End If

Et tu mets ça dans la propriété Sur activation, de façon à ce qu'Access actualise la présentation à chaque changement d'enregistrement
0
metalque89 Messages postés 33 Date d'inscription mercredi 3 octobre 2007 Statut Membre Dernière intervention 18 novembre 2008 2
26 mars 2008 à 14:19
Bonjour, j'ai finalement trouve une solution qui me conviens que je poste ici pour ceux qui en auront besoin a l'avenir:

Quelques precisions, l'exemple que j'avais donne etais simplifie, mes tables s'appellent en realite "groupe" et "nomproduit". Ma table "groupe" compte 5 champs texte et un nombre indetermine de booleans qui sont mes caracteristiques

Au niveau du principe, j'affiche tous mes champs de la table "groupe" dans une liste nommee list_groupe (je cache les champs que je veux pas voir), par le code ci-dessous (trouve sur internet) je determine le nombre de champs dans ma table.

'On determine le nombre de champs dans la table
Dim Nombre_Champs As Integer
Nombre_Champs = 0
Dim MCat As New ADOX.Catalog
Dim MTable As ADOX.Table
Set MCat.ActiveConnection = CurrentProject.Connection
Set MTable = MCat.Tables("groupe")
Nombre_Champs = (MTable.Columns.Count)


Ensuite, j'ecrit le code SQL qui me permettra de n'afficher que les champs qui sont coches.

'On ecrit la requete SQL
Dim SQL As String
SQL = "SELECT nomproduit.[Nom]"     'On selectionne avant tout le nom du produit
For i = 5 To Nombre_Champs - 1 'On ne s'interesse pas aux 5 premiers champs et indice commence a 0
If Me.List_Groupe.Column(i) <> 0 Then  '0 est la valeur lorsque la case n'est pas cochee
   SQL = SQL & ", nomproduit.[" & CurrentDb.TableDefs("groupe").Fields(i).Name & "]"
End If
Next i
SQL = SQL & " FROM nomproduit;"


Et pour finir je modifie le code SQL de ma requete deja existante par celui que je viens de trouve
Set Definition = CurrentDb.QueryDefs(Requete_caracteristiques)
Definition.SQL = SQL
Definition.Close
RefreshDatabaseWindow
ChangeRequeteDef = True

(code trouve sur internet)

La requete obtenue est affichee dans un sous formulaire,

voila, j'espere avoir assez detaille ma solution.

++
0