Création d'un formulaire de consultation [RESOLU] [Access] - Divers - Programmation
Marsh Posté le 03-03-2003 à 14:37:46
Bon si je comprends tout ... 
 
1) Essaye de faire un formulaire (forms1) qui  
contient uniquement une liste modifiable (listmod), 
où tu afficheras un champ de ta table à 
selectionner 
 
2) Ensuite créé avec l'assistant un formulaire (forms2) 
affichant tous les champs de ta table 
 
3) Dans la requête source du forms2 tu conditionnes 
par ta selection effectuée dans forms1 (au lieu 
de prendre tous les enr.) 
select * from matable where nom = forms2!listmod.value 
Niveau syntaxe j'ai pas vérifié ...   
  
 
 
 
 
 
 
 
 
 
Marsh Posté le 03-03-2003 à 14:53:59
Euh... pour les deux premieres étapes, je suis ok. 
Par contre, la derniere, j'ai du mal a voir et comment je dois renseigner le fait que les infos doivent etre affiché en fonction de l'entrée du premier formulaire. 
 
Il faut creer une requete??
Marsh Posté le 03-03-2003 à 15:05:36
Bon, ca y est, j'ai a peut pres trouvé, mais quand je lance le formulaire 2, il me demande la valeur du champ que j'ai renseigné dans le formulaire 1. C'est pas normal!!
Marsh Posté le 03-03-2003 à 15:18:42
Non ça veut dire que la syntaxe est pas la bonne 
t'a mis quoi niveau Where ?
Marsh Posté le 03-03-2003 à 15:27:32
En fait, je ne comprends pas comment ca peut fonctionner comme ca. 
Ne vaudrait il pas mieu que je fasse un bouton sur le formulaire 1 qui ouvre le formulaire 2?
Marsh Posté le 03-03-2003 à 15:28:29
| vttman2 a écrit : Non ça veut dire que la syntaxe est pas la bonne  | 
 
 
 
C'est quoi le Where??
Marsh Posté le 03-03-2003 à 15:34:20
Au niveau click de ta liste (malist) de choix de 
ton formulaire (form1) 
tu ouvres (docmd.openform "form2" ) 
le 2 ème formulaire (form2)dont la  
requête source est  
SELECT * FROM matable WHERE  
monchamp=[forms]![form1]![malist].value;  
 
Ok ?
Marsh Posté le 03-03-2003 à 15:57:15
A non, moi, j'avais tapé :  
Select Machines.* from Machines Order by [Machines].[Nom_Machines]
Marsh Posté le 03-03-2003 à 16:01:17
Au fait, y a pas moyen de faire ca avec un assistant?? 
Tout de meme au 21eme siecle!!  
 
Marsh Posté le 03-03-2003 à 16:09:59
C'est vraiment pas pour t'embeter et je te remercie d'aileurs du temps que tu passe a m'aider, mais je ne comprends pas du tout ce que je dois faire...   
  
 
Enfin, si, ne dramatisons pas non plus. 
C'est juste le : 
"Au niveau click de ta liste (malist) de choix de  
ton formulaire (form1)  
tu ouvres (docmd.openform "form2" ) " 
 
que j'ai pas compris   
 
 
 
Bon, allez, je reprends tout de zero.
Marsh Posté le 03-03-2003 à 16:40:25
ReplyMarsh Posté le 03-03-2003 à 16:42:07
Ok on reprend 
ta table : 
nom   prenom taille 
Dup   Jean   1,78 
Glag  gil    1,40 
Gro   hervé  1,59 
 
 
Dans ton formulaire form1  
tu as une liste : malist 
qui contient (on verra plus tard 
pour un identifiant unique car 
le nom ne l'est sans doute pas ...) 
Donc qui contient ... 
 
Dup 
Glag 
Gro 
 
Dans l'évenement Click  de malist 
(Procédure évenementielle) 
Tu codes Docmd.open "Form2" 
 
Dans ton formulaire Form2 niveau requête 
source => tu as (si tu as pris l'assistant) : 
le nom de ta table : matable 
 
Tu remplaces matable par  
select * from matable where nom = forms!form1!malist.value 
 
Essaye déjà ça, fais gaffe à la syntaxe ... 
 
Niveau assistant, ya peut-être ! mais 
moi pas connaitre ... remarque niveau forum 
on va peut-être attirer une bête qui va nous 
donner une façon de procéder plus classe !   
  
 
Marsh Posté le 03-03-2003 à 16:42:57
ReplyMarsh Posté le 03-03-2003 à 17:31:26
Ok, ca ca marche!!! 
Merci pour ton aide!!! 
A demain pour la suite...   
 
Marsh Posté le 04-03-2003 à 08:56:24
Salut. 
 
En fait, hier quand j'ai dis que ca marchais, c'etait vrai dans le cas ou je reprennais exactement a la lettre se que tu m'avais dis de faire. 
Puis ensuite, j'ai créé une nouvelle base avec les parametres qui correspondent a mon application, mais toujours en suivent le modele que tu m'as donné. 
Et là!! et bien ca marche pas.  
=> Quand je choisis mon enregistrement dans le menu déroulant, l'autre formulaire s'ouvre bien mais il n'afficha pas l'enregistrement correspondant, il affich rien du tout. Les champs sont vides. 
J'ai pourtant bien rentré la bonne source, enfin je pense : 
 
SELECT * FROM Tmachines WHERE nommachine=[forms]![Fmenu]![modifiable0].value;  
 
Je comprends pas   ca marchais pourtant quand j'ai fait l'exemple et là non!!!
  ca marchais pourtant quand j'ai fait l'exemple et là non!!!  
 
Marsh Posté le 04-03-2003 à 09:14:39
Salut 
Tu ouvres ton 1er formulaire, tu choisis 
une valeur dans la liste et tu laisses le formulaire ouvert 
puis tu créé une requête partie requêtes 
dont le contenu est  
SELECT * FROM Tmachines WHERE nommachine=[forms]![Fmenu]![modifiable0].value;   
A priori ça devrait te renvoyer 1 ligne  
sinon 
tu remplaces [forms]![Fmenu]![modifiable0].value 
par la valeur choisie dans ta liste  
et tu retestes ta requête ... 
 
tu peux aussi taper en requête 
SELECT [forms]![Fmenu]![modifiable0].value FROM Tmachines WHERE nommachine=[forms]![Fmenu]![modifiable0].value;   
pour vois ce que tu as dans ce champ ... 
 
Marsh Posté le 04-03-2003 à 10:27:27
Le formulaire reste bien ouvert!!! 
Je vais tester les autres solutions que tu me propose. 
 
 
EDIT:Rien à faire!!!! J'ai tout essayé, se que je ne comprends pas c'est que la premiere base que j'ai créé fonctionne parfaitement!!  
Je me demande quels sont les critere qui sont differnets et qui font que ca ne fonctionne pas.
Marsh Posté le 04-03-2003 à 10:39:07
Quand je lance mon formualaire directement sans passé par le formulaire de recherche, il me demande la valeur de forms]![Fmenu]![modifiable0].value, je lui donne et ca ne marche pas non plus...  
 
Marsh Posté le 04-03-2003 à 10:51:59
1) essaye de remplacer 
 
SELECT * FROM Tmachines WHERE nommachine=[forms]![Fmenu]![modifiable0].value;   
 
par 
SELECT * FROM Tmachines WHERE nommachine= "'" &[forms]![Fmenu]![modifiable0].value & "'";   
 
2) C pas un prob de minuscule, majuscule ? 
 
  
  
Marsh Posté le 04-03-2003 à 12:06:51
J'ai reussi mais, j'ai triché. 
Je t'explique ma methode des que j'ai plus de temps.
Marsh Posté le 04-03-2003 à 13:30:32
En faite, j'ai créé un bouton qui a comme evenement : 
 
Private Sub Commande2_Click() 
On Error GoTo Err_Commande2_Click 
 
    Dim stDocName As String 
    Dim stLinkCriteria As String 
 
    stDocName = "Fmachines" 
     
    stLinkCriteria = "[idmachine]=" & Me![Modifiable0] 
    DoCmd.OpenForm stDocName, , , stLinkCriteria 
 
Exit_Commande2_Click: 
    Exit Sub 
 
Err_Commande2_Click: 
    MsgBox Err.Description 
    Resume Exit_Commande2_Click 
     
End Sub 
 
 
Je te rassure, j'ai créé le bouton avec l'assistant. 
Ensuite, si je veux me passé du bouton, il suffit de le supprimer et de copier le script dans l'evenement de la liste modifiable. 
 
Dans le formulaire d'affichage, la source est simplement :  
 
SELECT Tmachines.*, * FROM Tmachines;  
 
Voila tout!! 
 
 
Je te remercie vraiment, encore une fois, du temps que tu as passé a me repondre et de tes reponses qui m'ont fait un peu plus découvrir access. 
 
Merci a toi vttman2   
  
Marsh Posté le 04-03-2003 à 13:53:39
Ah ouhais mais ça c beaucoup plus 
propre que ce que je t'ai montré ... 
 
C même ça qu'il faut faire   
  
 
 
Marsh Posté le 03-03-2003 à 12:59:44
Bonjour,
 
  

Je debute sur la création des formulaires sous Access et voila ce que je voudrais faire :
Créer un formulaire qui aurait pour fonction de consulter et seulement consulter une table. On choisirait dans un menu deroulant rattacher à un champ le nom de l'element à consulter et une fois celui-ci selectionné, toutes les autres infos relatives a cet éléments s'afficheraient dans les champs correspondant.
Pour l'instant, j'ai effectué la mise en page de tous mes champs, mais le probleme c'est que dans mon menu deroulant, je n'ai pas le liste de tous mes élements.
pourquoi??
Merci d'avance pour votre aide.
Message édité par GENIUS999 le 05-03-2003 à 09:01:55