Forum des développeurs  

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é.
Précédent   Forum des développeurs > Hardware, Systèmes et Logiciels > Microsoft Office > Access > Conception

Conception Le forum qui vous aide à résoudre vos questions relatives à la modélisation de votre base de données sous Access.

Réponse
 
Outils de la discussion
Vieux 14/08/2008, 12h52   #1 (permalink)
Invité régulier
 
Date d'inscription: août 2008
Messages: 14
Par défaut Valeurs dans un formulaire

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
hyppo74 est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 14/08/2008, 15h02   #2 (permalink)
Expert Confirmé Sénior
 
Date d'inscription: octobre 2005
Messages: 2 520
Par défaut

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
 
Note la flèche de la liste déroulante mesure 0.44 cm de large.

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.
marot_r est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 01/09/2008, 17h43   #3 (permalink)
Invité régulier
 
Date d'inscription: août 2008
Messages: 14
Par défaut

Re, j'avais un peu décroché sur ce projet mais me voila de retour...

Par contre je dois êter blond par ce que je n'ai pas compris grand chose sur tes explications... ;°))

Merci à toi
hyppo74 est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 01/09/2008, 20h17   #4 (permalink)
Membre Confirmé
 
Date d'inscription: mai 2008
Âge: 42
Messages: 230
Envoyer un message via MSN à isabelle b
Par défaut

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
isabelle b est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 02/09/2008, 11h28   #5 (permalink)
Invité régulier
 
Date d'inscription: août 2008
Messages: 14
Par défaut

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
hyppo74 est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 02/09/2008, 21h14   #6 (permalink)
Expert Confirmé Sénior
 
Date d'inscription: octobre 2005
Messages: 2 520
Par défaut

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.
marot_r est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 03/09/2008, 20h47   #7 (permalink)
Invité régulier
 
Date d'inscription: août 2008
Messages: 14
Par défaut

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
hyppo74 est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 03/09/2008, 21h23   #8 (permalink)
Expert Confirmé Sénior
 
Date d'inscription: octobre 2005
Messages: 2 520
Par défaut

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.
marot_r est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 04/09/2008, 20h38   #9 (permalink)
Invité régulier
 
Date d'inscription: août 2008
Messages: 14
Par défaut

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
Images attachées
Type de fichier : jpg relations.JPG (65,3 Ko, 2 affichages)
Type de fichier : jpg formulaire.jpg (89,3 Ko, 2 affichages)
hyppo74 est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 15/09/2008, 19h06   #10 (permalink)
Expert Confirmé Sénior
 
Date d'inscription: octobre 2005
Messages: 2 520
Par défaut

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.
marot_r est déconnecté   Envoyer un message privé Réponse avec citation
NEWS ACCESSF.A.Q AccessF.A.Q VBATutorielsSourcesOutilsLivresAccess TVAccess 2007

Réponse

Précédent   Forum des développeurs > Hardware, Systèmes et Logiciels > Microsoft Office > Access > Conception

 
Offres d' emploi informatique sur Lesjeudis.com


Outils de la discussion

Règles de messages
Vous ne pouvez pas créer de nouvelles discussions
Vous ne pouvez pas envoyer des réponses
Vous ne pouvez pas envoyer des pièces jointes
Vous ne pouvez pas modifier vos messages

Les balises BB sont activées : oui
Les smileys sont activés : oui
La balise [IMG] est activée : oui
Le code HTML peut être employé : non
Trackbacks are non
Pingbacks are non
Refbacks are non
Navigation rapide