![]() |
| Le forum de référence en programmation et développement. Articles, cours et tutoriels du débutant au chef de projet et DBA confirmé. | |||||||
|
|||||||
| Conception Le forum qui vous aide à résoudre vos questions relatives à la modélisation de votre base de données sous Access. |
![]() |
|
|
Outils de la discussion |
|
|
#1 (permalink) |
|
Invité régulier
![]() Date d'inscription: août 2008
Messages: 14
|
Bonjour,
je savais bien que je reviendrais plus vite que prévu... Bon après la mésaventure de mettre à jour une liste déroulante en fonction d'une autre dans un sous-formulaire, je reviens pour un problème concernant justement ces listes de valeurs dans mon sous-formulaire. Mon formulaire gère les "commandes", le sous-formulaire gère quand à lui les "lignes de ma commande". Une liste de valeurs "Tailles" est mise à jour dès que j'ai choisi "le Type" d'article. Si bien que pour un article donné je n'ai que la taille qui lui correspond . Jusque là pas de problème. En fait tout se passe bien jusqu'au 2ème enregistrement (ou ligne) de ma commande. En effet si dans ma 2ème ligne le "type" d'article n'est pas le même (donc a fortiori la "taille" non plus) je perd la valeur "taille" de mon premier enregistrement.(qui par contre reste bien enregistré dans ma table commande) Ca me parait normal puisque la liste de valeur "taille" est obtenue à partir d'une requete qui est lancée pour chaque nouvelle ligne de ma commande. J'aimerais savoir s'il est possible malgré tout de garder la valeur dans les lignes précedentes par quelles que manières que ce soient, merci beaucoup de votre aide |
|
|
|
|
|
#2 (permalink) |
|
Expert Confirmé Sénior
![]() Date d'inscription: octobre 2005
Messages: 2 520
|
Rebonjour :-).
C'est un pb classique en effet tu as plusieurs stratégie pour le résoudre mais toutes nécessitent de faire une jointure sur la table référence et d'ajoutre à ta requête le champ de cette table. Ensuite tu mets simplement en plus de ton champ de sélection un champ d'affichage qui affiche le champ. Quand je le fait, j'ai 2 colonnes : 1 qui s'appelle 'ChoixMaValeur' et un qui s'appelle 'MaValeur'. Version plus sofistiquée, tu as toujours 2 champs u d'affichage l'autre de sélection mais ces 2 champs sont superposés. Cela ne marche que si tu es en mode fotmulaire unique ou mode continu. Tu place la liste déroulante sur le champ texte et tu défini le fond de ta liste à transparent comme cela quand la liste est vide c'est le champ texte qui est visible. Et tu mets dans l'événement OnGetFocus du champ texte Code :
me.maListe.SetFocus Le temps de la mise au point mets les 2 champs l'un en dessous de l'autres. A+
__________________
Merci de ne pas poster pour des pb techniques dans les messages privés. |
|
|
|
|
|
#4 (permalink) |
|
Membre Confirmé
![]() |
Bonsoir,
si je te suis bien tu dois avoir : une table articles avec id_articles article id taille ... et une autre table tailles avec id_taille taille qui doivent être liées entre elles par Id taille, par exemple a moins que tu ne considères que plusieurs articles peuvent avoir plusieurs tailles pour une même commande et que le client puissent acheter plusieurs articles avec des tailles différentes, par conséquent tu aurais une table intermédiaire avec Id taille et id article Il faut mettre dans le sous formulaire l'id taille et le champ dans lequel la taille est saisie (en l'occurence le champs taille) ta liste déroulante ne fait apparaitre que la flêche de l'id taille mais le champ taille juste à côté reste soit tu les mets juste à côte l'un de l'autre, soit tu les superposes comme te le propose Marot bon courage isabelle |
|
|
|
|
|
#5 (permalink) |
|
Invité régulier
![]() Date d'inscription: août 2008
Messages: 14
|
Hello
Bon je n'ai pas saisi du tout qu'elles sont les manips a effectuées, sur quelles tableq, formulaires, requetes.. Toute âme charitable serait la bienvenue, merci d'avance Dernière modification par hyppo74 ; 02/09/2008 à 19h23 |
|
|
|
|
|
#6 (permalink) |
|
Expert Confirmé Sénior
![]() Date d'inscription: octobre 2005
Messages: 2 520
|
Le pb vient du fait qu'il n'y a jamais qu'un seul 'formulaire' en mode fomulaier continu. Quand tu modifie la source de données d'une liste déroulante, cela se répercute sur toutes les autres enregistrements affichés.
Mettons que tu ai une liste qui affiche : a - Texte 1 b - Texte 2 c - Texte 3 et que dans ton enregistrement 1 tu as la valeur a, tout va bien ta liste peux afficher Texte 1 qui correspond à a. Si maintenant pour ton second enr tu as besoin d'une liste qui affiche q - Texte autre pour q w - Texte autre pour w e - Texte autre pour e et que dans ton second enregistrement tu as la valeur w, la liste qui marche très bien pour ton enregistrement 1 ne marche plus pour ton enr 2 et elle apparaît blanche. Maintenant si tu change ta liste initiale (a,b,c) pour (q,w,e), là ton second enr est correct mais plus ton 1er. Donc cela te prend 2 champs : 1 pour offrir la liste des choix et un pour afficher la valeur actuellement dans la table. Voilà j'espère qu'avec ces explications mon 1er poste devient plus clair. N'hésite pas à demander des détails si il y a encore des points d'ombre. A+
__________________
Merci de ne pas poster pour des pb techniques dans les messages privés. |
|
|
|
|
|
#7 (permalink) |
|
Invité régulier
![]() Date d'inscription: août 2008
Messages: 14
|
Merci Marot_r pour ces explications.
Jusque la je comprends le mécanisme. Ce que, par contre, je ne comprend pas c'est la jointure qu'il faut faire. Est-ce à dire que je dois faire une auto-jointure ou Valeur Taille = Affichage Taille??? Perception ID perception ID Article Valeur Taille ID Type Quantité Affichage Taille J'ai essayé dans le formulaire de faire ceci: Private Sub ID_Taille_AfterUpdate() Me!ID_Taille.Value = Me!Taille.Value End Sub Mais ca ne fonctionne pas non plus...je deviens mûr....merci |
|
|
|
|
|
#8 (permalink) |
|
Expert Confirmé Sénior
![]() Date d'inscription: octobre 2005
Messages: 2 520
|
Si tu veux utiliser la jointure alors ta requête doit mettre en relation ta table de détail et ta table de référence. Utilise une jointuer à gauche.
Ton SQL dev rait ressembler à un truc comme ça : Code sql :
SELECT TaTableDetail.*, TaTableReference.Libelle FROM TaTableDetail LEFT JOIN TaTableReference ON TaTableDetail.ClefTaTableReference = TaTableReference .ClefTaTableReference; Si tu fais un essais avec cette requête tu verras que dés que tu renseignes ableDetail.ClefTaTableReference elle affiche le texte associé. A+
__________________
Merci de ne pas poster pour des pb techniques dans les messages privés. |
|
|
|
|
|
#9 (permalink) |
|
Invité régulier
![]() Date d'inscription: août 2008
Messages: 14
|
Bon grace à toi Marot_r ca avance à petit pas mais ca avance tout de même...
Bon voici ce que j'ai fait: Dans le sous formulaire "détail perception" j'ai rajouté un champ qui n'éxiste pas dans ma table "détail perception". Ce champ est alimenté par la requête suivante: SELECT Tailles.Tailles FROM Détail_Perception LEFT JOIN Tailles ON Détail_Perception.ID_Taille = Tailles.ID_Tailles; Voici ce qui se passe lorsque je saisi des enregistrements dans le formulaire: CF: voir "formulaire.jpg Je n'ai certainement pas du tout comprendre....of course... merci d'avance |
|
|
|
|
|
#10 (permalink) |
|
Expert Confirmé Sénior
![]() Date d'inscription: octobre 2005
Messages: 2 520
|
Il faut ajouter ce champ dans la requête et l'afficher ensuite dans le formulaire.
En mode feuille de données ou continu il n'y a en réalité qu'un exemplaire des champs calculer donc Access affiche la même valeur partout. A+
__________________
Merci de ne pas poster pour des pb techniques dans les messages privés. |
|
|
|
|
![]() |
![]() |
||
Valeurs dans un formulaire
|
||
Offres d'
emploi informatique
sur Lesjeudis.com
|
| Outils de la discussion | |
|
|