Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Access > IHM
IHM Ce forum est dédié aux questions relatives à la création de formulaires et d'états, avec ou sans code VBA, et macros.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 23/03/2011, 10h07   #1
Invité de passage
 
Inscription : novembre 2008
Messages : 14
Détails du profil
Informations forums :
Inscription : novembre 2008
Messages : 14
Points : 0
Points : 0
Par défaut Champs visibles selon valeur d'un autre champ

Bonjour,

Voila le problème que je voudrais résoudre.

Je mets en place une BDD pour gérer les matériels de ma société.
Je suis en train de faire un Etat qui affiche les matériels et leurs informations pour une personne donnée. A l'ouverture de l'état on me demande donc l'identifiant de cette personne. Jusque là, tout va bien, ça affiche parfaitement les numéro de série des matériels de la personne.

Par exemple:

Machin

PC - SN 123456
Ecran - SN 98754

En effet, actuellement, j'ai une table qui contient des enregistrements du type:

Machin 123456 PC
Machin 98754 Ecran

etc...

C'est sur cette table que se base mon état, qui ne peut donc afficher directement que le numéro de série.

J'ai d'autres tables, une par type de matériel, qui contiennent les infos de chaque matériel (par exemple le SN, la marque le modèle, etc...)

Je voudrais que pour chaque ligne matériel de l'état, les informations du matériel apparaissent.

Mais là je bloque, je ne vois pas comment faire.

J'ai pensé rendre visible ou pas certains champs avec un Select Case mais je n'y arrive pas.

Des idées ?
theclaw est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/03/2011, 11h11   #2
Membre du Club
 
Homme hadrien
Apprenti Ingénieur
Inscription : mars 2011
Messages : 86
Détails du profil
Informations personnelles :
Nom : Homme hadrien
Localisation : France

Informations professionnelles :
Activité : Apprenti Ingénieur
Secteur : Bâtiment Travaux Publics

Informations forums :
Inscription : mars 2011
Messages : 86
Points : 56
Points : 56
salut,

Je fais comme ça mais avec des formulaires :
à l'ouverture, procedure evenementielle

Code :
1
2
3
If Forms![frm1].txtContact4.Value = "ouioui" then
   Me![Etat1].textebox25.Visible = True
end if
J'ai mis "Me" parce que je ne connais pas le prefixe de selection des Etats
FtF Nemesis est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/03/2011, 12h41   #3
Membre éclairé
 
Homme Pierre-Jean
Développeur informatique
Inscription : février 2010
Messages : 306
Détails du profil
Informations personnelles :
Nom : Homme Pierre-Jean
Âge : 31
Localisation : France

Informations professionnelles :
Activité : Développeur informatique
Secteur : Industrie

Informations forums :
Inscription : février 2010
Messages : 306
Points : 330
Points : 330
Envoyer un message via MSN à paidge
Citation:
Envoyé par theclaw Voir le message
J'ai d'autres tables, une par type de matériel, qui contiennent les infos de chaque matériel (par exemple le SN, la marque le modèle, etc...)

Je voudrais que pour chaque ligne matériel de l'état, les informations du matériel apparaissent.
Bonjour.

Alors je n'ai peut-être pas tout compris, mais pourquoi ne changes-tu pas la source de ton état par une requête avec jointure(s) ????
paidge est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/03/2011, 13h26   #4
Invité de passage
 
Inscription : novembre 2008
Messages : 14
Détails du profil
Informations forums :
Inscription : novembre 2008
Messages : 14
Points : 0
Points : 0
Citation:
Envoyé par paidge Voir le message
Bonjour.

Alors je n'ai peut-être pas tout compris, mais pourquoi ne changes-tu pas la source de ton état par une requête avec jointure(s) ????
Hello

Alors pour être honnête je ne sais pas ce que tu veux dire...

Actuellement, j'affiche / masque des champs en fonction d'une boite à options.
theclaw est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/03/2011, 14h26   #5
Membre éclairé
 
Homme Pierre-Jean
Développeur informatique
Inscription : février 2010
Messages : 306
Détails du profil
Informations personnelles :
Nom : Homme Pierre-Jean
Âge : 31
Localisation : France

Informations professionnelles :
Activité : Développeur informatique
Secteur : Industrie

Informations forums :
Inscription : février 2010
Messages : 306
Points : 330
Points : 330
Envoyer un message via MSN à paidge
Une requête avec jointure(s) est basée sur plusieurs tables reliées entre elles. Tu auras de plus amples informations sur ce tuto.

Principe:
Prenons une table T_employes (IDemploye, nom, prenom, service)
Et une table T_materiel (IDmateriel, type, marque, S/N, employe)
NB : le type sera pour l'exemple Ecran, UC, imprimante, etc.

Les champs IDemploye et IDmateriel sont ce qu'on appelle des clés primaires et sont UNIQUES pour chaque enregistrement.
Le champ employe lui est ce qu'on appelle une clé trangère.
Les 2 tables sont reliées entre elles par une jointure Un-Plusieurs (1 matériel appartient à un employé et un employé peut avoir plusieurs matériel).
La jointure relie le champ IDemploye de la table T_employes au champ employe de la table T_materiel.

De cette manière, tu peux avoir, par exemple, la liste du matériel pour un service donné avec une requête du type :
Code :
SELECT type, marque, S/N FROM T_materiel INNER JOIN T_employes ON T_employes.IDemploye=T_materiel.employe WHERE service='Finance';
Si tu ne connais pas les jointures, je te conseille d'apprendre cette notion, c'est INDISPENSABLE pour récupérer les infos que tu souhaites dans une BDD.
paidge est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/03/2011, 15h04   #6
Invité de passage
 
Inscription : novembre 2008
Messages : 14
Détails du profil
Informations forums :
Inscription : novembre 2008
Messages : 14
Points : 0
Points : 0
Je connais les jointures, je ne sais juste pas comment baser mon état sur une requête avec jointure dans ce cas précis.
theclaw est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/03/2011, 15h11   #7
Membre éclairé
 
Homme Pierre-Jean
Développeur informatique
Inscription : février 2010
Messages : 306
Détails du profil
Informations personnelles :
Nom : Homme Pierre-Jean
Âge : 31
Localisation : France

Informations professionnelles :
Activité : Développeur informatique
Secteur : Industrie

Informations forums :
Inscription : février 2010
Messages : 306
Points : 330
Points : 330
Envoyer un message via MSN à paidge
ce qu'il faudrait c'est un aperçu de ta modélisation : les tables avec leurs champs et leurs relations.
Si j'ai bien compris ton problème (j'en doûte encore un peu lol ), une requête correctement conçue répondra à ton besoin.

EDIT : tu sais aller dans les propriétés de ton état pour y modifier la source ?
paidge est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/03/2011, 16h13   #8
Invité de passage
 
Inscription : novembre 2008
Messages : 14
Détails du profil
Informations forums :
Inscription : novembre 2008
Messages : 14
Points : 0
Points : 0
Citation:
Envoyé par paidge Voir le message
ce qu'il faudrait c'est un aperçu de ta modélisation : les tables avec leurs champs et leurs relations.
Si j'ai bien compris ton problème (j'en doûte encore un peu lol ), une requête correctement conçue répondra à ton besoin.

EDIT : tu sais aller dans les propriétés de ton état pour y modifier la source ?
C'est le soucis, sur un forum c'est un peu limité pour expliquer sa conception

Oui je sais aller changer la source.

Pas grave, je finirai par trouver
theclaw est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/03/2011, 16h18   #9
Membre éclairé
 
Homme Pierre-Jean
Développeur informatique
Inscription : février 2010
Messages : 306
Détails du profil
Informations personnelles :
Nom : Homme Pierre-Jean
Âge : 31
Localisation : France

Informations professionnelles :
Activité : Développeur informatique
Secteur : Industrie

Informations forums :
Inscription : février 2010
Messages : 306
Points : 330
Points : 330
Envoyer un message via MSN à paidge
Citation:
Envoyé par theclaw
C'est le soucis, sur un forum c'est un peu limité pour expliquer sa conception
...
Pas grave, je finirai par trouver
Si jamais tu n'y arrives pas, un petit screenshot peut faire l'affaire
paidge est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/03/2011, 16h55   #10
Invité de passage
 
Inscription : novembre 2008
Messages : 14
Détails du profil
Informations forums :
Inscription : novembre 2008
Messages : 14
Points : 0
Points : 0
Citation:
Envoyé par paidge Voir le message
Si jamais tu n'y arrives pas, un petit screenshot peut faire l'affaire
Bon, je vais essayer de résumer

Je crée une BDD pour gérer les affectations de matériels informatiques pour ma boite.

En simplifiant (et sans respecter les syntaxes des champs), j'ai:

Une Table User (ID, Nom, Prénom)
Une Table Computers (S/N, Marque, Modèle)
Une Table Screens (S/N, Marque, Modèle)
Une Table Assign (ID User, ID Matériel, Type Matériel, Date Affectation)

J'ai d'autres tables mais pour la partie dont j'ai besoin il n'est pas utile de les présenter.

Pour l'état en question, je me base sur une requête:



Elle me permet de récupérer tout ce dont je pourrais avoir besoin et demande l'ID Utilisateur à l'exécution.

Une fois entrée cette ID, j'obtiens parfaitement les matériels de l'utilisateur choisi. Mais je n'obtiens QUE le type de matériel et son numéro de série (puisque c'est ce qui est dans la table ASSIGN). Je n'arrive pas à faire le lien vers les autres infos de chaque matos.

Pas sur que ça soit plus clair
theclaw est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/03/2011, 10h17   #11
Membre éclairé
 
Homme Pierre-Jean
Développeur informatique
Inscription : février 2010
Messages : 306
Détails du profil
Informations personnelles :
Nom : Homme Pierre-Jean
Âge : 31
Localisation : France

Informations professionnelles :
Activité : Développeur informatique
Secteur : Industrie

Informations forums :
Inscription : février 2010
Messages : 306
Points : 330
Points : 330
Envoyer un message via MSN à paidge
Bonjour,

Oui je vois un peu mieux ton problème.
Quand je t'ai demandé un aperçu de la modélisation de ta BDD, je parlais du schéma qui montre toutes tes tables avec leurs relations. Pas d'une requête (car le mieux pour une requête, à mon avis, c'est quand même son code SQL).
Car j'ai l'impression que la modélisation de ta BDD serait à revoir....Perso, j'aurai mis tous le matos dans une même table (T_matos) avec un champ ID(numAuto), un champ SerialNumber, un champ modèle relié à une table T_modele(reliée elle-même à une table T_marque et à une table T_type : ecran, carteSIM,imprimante,UC, etc.), etc. Tu n'aurais pas eu tous ces problèmes Menfin c'est que mon avis....

En attendant,j'ai reproduit chez moi très simplement ta requête et j'obtiens un résultat du type :
-User1 | Imprimante1 | --Vide-- | --Vide-- |
-User1 | --Vide-- | Ecran2 | --Vide-- |
-User1 | --Vide-- | --Vide-- | PC3 |
-User2 | --Vide-- | Ecran1 | --Vide-- |
-User2 | --Vide-- | --Vide-- | PC1 |
-User9 | Imprimante5 | --Vide-- | --Vide-- |

A priori c'est ce que tu devrais avoir avec ta requête (ceci grâce aux jointures externes que tu as mises en place). En tous cas, ça marche chez moi. Donc je ne vois pas pourquoi tu ne pourrais pas avoir les infos des autres tables. Qu'obtiens-tu comme résultat de ta requête ?

EDIT : si tu ne veux pas ou ne peux pas toucher à ta modélisation, il y a un tuto qui pourrait peut-être t'intéresser.
Une autre piste aussi pour n'avoir qu'un seul champ et éviter d'avoir des champs vides(mais question performances sur de grosses tables à mon avis c'est chaud) c'est d'avoir un champ avec une expression du type :
Code :
matos: VraiFaux(EstNull([T_printers]![modele]);VraiFaux(EstNull([T_UC]![modele]);VraiFaux(EstNull([T_screens]![modele]);"";[T_screens]![modele]);[T_UC]![modele]);[T_printers]![modele])
paidge est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/03/2011, 14h54   #12
Invité de passage
 
Inscription : novembre 2008
Messages : 14
Détails du profil
Informations forums :
Inscription : novembre 2008
Messages : 14
Points : 0
Points : 0
Hello

C'est effectivement ce que j'ai obtenu 5 minutes après avoir posté le message précédent, sans rien modifier et à ma grande surprise.

J'avoue ne pas savoir ce que j'ai changé entre le moment où ça ne marchait pas et celui où j'ai posté le message.

Du coup, Access fait parfaitement ce dont j'ai besoin et je me sens un peu idiot
theclaw est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/03/2011, 16h25   #13
Membre éclairé
 
Homme Pierre-Jean
Développeur informatique
Inscription : février 2010
Messages : 306
Détails du profil
Informations personnelles :
Nom : Homme Pierre-Jean
Âge : 31
Localisation : France

Informations professionnelles :
Activité : Développeur informatique
Secteur : Industrie

Informations forums :
Inscription : février 2010
Messages : 306
Points : 330
Points : 330
Envoyer un message via MSN à paidge
Pas de souci ce sont des choses qui arrivent
Si ton problème est réglé cliques sur
sinon n'hésites pas si tu as besoin d'aide ^^
paidge est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/03/2011, 11h25   #14
Invité de passage
 
Inscription : novembre 2008
Messages : 14
Détails du profil
Informations forums :
Inscription : novembre 2008
Messages : 14
Points : 0
Points : 0
Citation:
Envoyé par paidge Voir le message
Pas de souci ce sont des choses qui arrivent
Si ton problème est réglé cliques sur
sinon n'hésites pas si tu as besoin d'aide ^^
J'ai une autre question qui n'a rien à voir:

Dans mes souvenirs d'access (97) on pouvait générer un "exécutable" pour diffuser la bdd à des gens n'ayant pas access. C'est toujours d'actualité en access 2010 ?
theclaw est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/03/2011, 11h40   #15
Membre éclairé
 
Homme Pierre-Jean
Développeur informatique
Inscription : février 2010
Messages : 306
Détails du profil
Informations personnelles :
Nom : Homme Pierre-Jean
Âge : 31
Localisation : France

Informations professionnelles :
Activité : Développeur informatique
Secteur : Industrie

Informations forums :
Inscription : février 2010
Messages : 306
Points : 330
Points : 330
Envoyer un message via MSN à paidge
Je n'utilise pas ACCESS 2010 et je n'ai jamais utilisé ce procédé mais je pense que oui. En faisant une recherche sur "Runtime Access 2010", tu devrais avoir des éléments de réponse.
paidge est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/03/2011, 13h21   #16
Invité de passage
 
Inscription : novembre 2008
Messages : 14
Détails du profil
Informations forums :
Inscription : novembre 2008
Messages : 14
Points : 0
Points : 0
Citation:
Envoyé par paidge Voir le message
Je n'utilise pas ACCESS 2010 et je n'ai jamais utilisé ce procédé mais je pense que oui. En faisant une recherche sur "Runtime Access 2010", tu devrais avoir des éléments de réponse.
Ah voila c'est ça "Runtime".

Je vais chercher.

Merci
theclaw est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 21h31.


 
 
 
 
Partenaires

Hébergement Web