|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Invité de passage
![]() Inscription : novembre 2008 Messages : 14 ![]() |
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 ? |
|
|
00
|
|
|
#2 | ||
|
Membre du Club
![]() hadrien Apprenti Ingénieur Inscription : mars 2011 Messages : 86 ![]() |
salut,
Je fais comme ça mais avec des formulaires : à l'ouverture, procedure evenementielle Code :
|
||
|
|
00
|
|
|
#3 | |
|
Membre éclairé
![]() |
Citation:
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) ???? |
|
|
|
00
|
|
|
#4 | |
|
Invité de passage
![]() Inscription : novembre 2008 Messages : 14 ![]() |
Citation:
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. |
|
|
|
00
|
|
|
#5 |
|
Membre éclairé
![]() |
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'; |
|
|
00
|
|
|
#6 |
|
Invité de passage
![]() Inscription : novembre 2008 Messages : 14 ![]() |
Je connais les jointures, je ne sais juste pas comment baser mon état sur une requête avec jointure dans ce cas précis.
|
|
|
00
|
|
|
#7 |
|
Membre éclairé
![]() |
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 EDIT : tu sais aller dans les propriétés de ton état pour y modifier la source ? |
|
|
00
|
|
|
#8 | |
|
Invité de passage
![]() Inscription : novembre 2008 Messages : 14 ![]() |
Citation:
Oui je sais aller changer la source. Pas grave, je finirai par trouver |
|
|
|
00
|
|
|
#9 | |
|
Membre éclairé
![]() |
Citation:
|
|
|
|
00
|
|
|
#10 |
|
Invité de passage
![]() Inscription : novembre 2008 Messages : 14 ![]() |
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 |
|
|
00
|
|
|
#11 |
|
Membre éclairé
![]() |
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 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]) |
|
|
00
|
|
|
#12 |
|
Invité de passage
![]() Inscription : novembre 2008 Messages : 14 ![]() |
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 |
|
|
00
|
|
|
#13 |
|
Membre éclairé
![]() |
Pas de souci
Si ton problème est réglé cliques sur ![]() sinon n'hésites pas si tu as besoin d'aide ^^ |
|
|
00
|
|
|
#14 | |
|
Invité de passage
![]() Inscription : novembre 2008 Messages : 14 ![]() |
Citation:
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 ? |
|
|
|
00
|
|
|
#15 |
|
Membre éclairé
![]() |
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.
|
|
|
00
|
|
|
#16 |
|
Invité de passage
![]() Inscription : novembre 2008 Messages : 14 ![]() |
|
|
|
00
|
Copyright © 2000-2012 - www.developpez.com