Quelques soucis avec Access

Résolu/Fermé
Gleude25 Messages postés 95 Date d'inscription mardi 26 avril 2011 Statut Membre Dernière intervention 31 janvier 2013 - 26 avril 2011 à 16:34
Gleude25 Messages postés 95 Date d'inscription mardi 26 avril 2011 Statut Membre Dernière intervention 31 janvier 2013 - 28 avril 2011 à 14:45
Bonjour,

Je me présente comme je suis nouveaux. Je m'appel Claude, et e suis étudiant en Génie Méca Prod à l'IUT de Besançon-Vesoul. Pour valider mon Semestre 4, j'effectue un stage de 10 semaines en entreprise. Le but de mon stage est de faire une base de donné sous ACCESS pour la gestion des stocks des outils de l'entreprise (pour le fraisage, tournage, etc).

Ca fait longtemps que j'ai pas retouché à ACCESS, donc j'ai un peu de mal à me remettre dedans.


Ce que j'ai fais pour commencer, c'est une petite base de donnés pour tester un peu les fonctionnalité d'ACCESS:

J'ai mis en place mes liens comme ci-dessous :
https://imageshack.com/
On a les produits, et leurs fournisseurs (ne tenez pas compte des mouvements, ca ne m'est pas utile pour l'instant).

Maintenant ce que je veux, c'est créer un formulaire, avec une liste deroulante ou je choisis la reference d'un produit, et ma bdd m'affiche toutes les infos sur le produit et le fournisseur associé à cet article. Seulement je n'y arrive pas...

Je crois que ce n'est pas possible a cause des clé primaire que j'ai mis, puisque je peux faire l'inverse, à savoir chercher le fournisseur dans une liste deroulante pour trouver les articles qui lui sont associé.
https://imageshack.com/


Pour info, je ne peux pas selectionner l'onglet ci-dessous
https://imageshack.com/


Si vous pouviez me dire comment résoudre ce problème, ca m'oterais une épine du pied. Merci !



Je reste disponible à d'éventuelles questions sur ma base de donné! ;)

13 réponses

Jean_Jacques
27 avril 2011 à 13:57
Gleude25,

Je viens de traiter ce dossier pour un autre déposant. Il me semble que la requête qui est sur le formulaire : Unités
- et qui se nomme listage machin-chose (en plein milieu) pourrait vous être utile
Il s'agit d'une requête paramétrée, qui peut être habillée avec un formulaire.
- Plus simple, je n'y crois pas ! ;-)

http://www.cijoint.fr/cjlink.php?file=cj201104/cijM2Qx58E.zip

Nota : Je m'absente le reste de l'après-midi
1
Jean_Jacques Messages postés 1040 Date d'inscription mercredi 30 avril 2008 Statut Membre Dernière intervention 1 août 2014 112
Modifié par Jean_Jacques le 28/04/2011 à 13:19
Gleude25,
J'ai connu les mêmes affres de l'incompréhension ..... Chacun sont tour, si j'ose dire ;-)

Voilà pour avancer. A tester en harmonie avec le cosmos. Zen quoi !

- Il faut bien comprendre que l'information saisie manuellement est d'abord comparée à chacun des enregistrements de la colonne [Ref client].


Private Sub Champ_de_saisie_AfterUpdate()
With CodeContextObject
DoCmd.GoToControl "Champ_de_saisie"
DoCmd.FindRecord [Ref client], , True, , True

If Champ_de_saisie <> [Ref client] Then
MsgBox "Ce code est inconnu : " & Me!Champ_de_saisie
Me!Champ_de_saisie = ""

End If

End With

End Sub

NB : Text17 doit être remplacé partout par Champ_de_saisie
A+
La science ne fait que trouver ce qui existe depuis toujours.
REEVES Hubert.
1
Gleude25 Messages postés 95 Date d'inscription mardi 26 avril 2011 Statut Membre Dernière intervention 31 janvier 2013 9
28 avril 2011 à 13:43
Jean-Jacques,
ca commence à prende forme un peu, par contre, ne faut-il pas plutôt mettre [Produits]![Ref] quand je vais chercher dans ma table, plutôt que [Ref] ?
[Produits]![Ref], c'est pour dire que je vais chercher dans me table Produits; parce que à chaque fois, il me met: "ce code est inconnu"

Cordialement
0
Jean_Jacques Messages postés 1040 Date d'inscription mercredi 30 avril 2008 Statut Membre Dernière intervention 1 août 2014 112
28 avril 2011 à 14:11
Gleude25,

La procédure travaille uniquement sur une table. Le nom du champ suffit.
Et puis la requête à peut-être raison ....
Quel est le format du code saisi manuellement ? Chiiffres ? lettres ? Un mix des 2 ? minuscules ? ...
A+
0
Gleude25 Messages postés 95 Date d'inscription mardi 26 avril 2011 Statut Membre Dernière intervention 31 janvier 2013 9
Modifié par Gleude25 le 28/04/2011 à 14:19
Simplement chiffres dans cet exemple la,
mais dans la base de donnée ou je vais mettre en place ce petit systeme, il y aura des refenrences avec des chiffres, majuscules, minuscules, et caracteres speciaux à savoir /,-. et même des espaces...

Cordialement
0
Gleude25 Messages postés 95 Date d'inscription mardi 26 avril 2011 Statut Membre Dernière intervention 31 janvier 2013 9
26 avril 2011 à 16:39
J'allais oublier de préciser, j'ai cocher certaines cases pour les relations entre les tables, car c'est recommandé j'ai l'impression...

https://imageshack.com/
0
castours Messages postés 2955 Date d'inscription lundi 18 septembre 2006 Statut Membre Dernière intervention 31 août 2019 217
26 avril 2011 à 23:55
Bonjour
Pour les relations, il te faut prendre un N°auto Comme cle Primaire
Exemple: N°Four, N°Prod
Si tu as un meme nom de fournisseur ou de produit tu seras embeté.
0
castours Messages postés 2955 Date d'inscription lundi 18 septembre 2006 Statut Membre Dernière intervention 31 août 2019 217
27 avril 2011 à 00:43
Sur ce lien tu trouveras des exemples de formulaires

http://www.cijoint.fr/cjlink.php?file=cj201104/cijW2BJbXT.zip
0
Jean_Jacques
27 avril 2011 à 08:33
Bonjour Castours,
Merci d'attirer mon attention
Je m'en suis aperçu, il y a un caractère de trop (à vide qui se sélectionne par défaut, à la fin de la chaîne de caractères).
La solution : copier le tout, tel quel, dans la barre d'adresse. Ça fonctionne chez moi.
Cordialement
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Bonour Gleude25,


Votre question est bien connue sur CCM.
Dans ce bricolo à télécharger vous trouverez comment afficher un enregistrement à partir d'un argument sélectionné dans une liste déroulante


http://www.cijoint.fr/cjlink.php?file=cj201104/cijWwdrtak.zip

Bon stage
Cordialement
....
La science ne fait que trouver ce qui existe depuis toujours.
REEVES Hubert
0
castours Messages postés 2955 Date d'inscription lundi 18 septembre 2006 Statut Membre Dernière intervention 31 août 2019 217
27 avril 2011 à 08:26
Bonjour
Le lien ne fonctionne pas
0
Gleude25 Messages postés 95 Date d'inscription mardi 26 avril 2011 Statut Membre Dernière intervention 31 janvier 2013 9
Modifié par Gleude25 le 27/04/2011 à 10:41
Bonjour,
Dans ton formulaire, je ne comprend pas l'utilité de pouvoir changer la désignation et la classification, puisque la seule chose à changer (si j'ai bien compris), c'est la saisie.
De plus, je ne comprend pas l'utilité d'avoir la désignation et la classification, car n'étant pas liés, ca amene à des incohérences...

A part ca, je ne comprend pas comment ta liste de saisie (independante de tous les autres champs) peut renvoyer a ta table T_Article ? Ca a été fait avec la Macro "saisie" j'immagine, mais n'y a t-il pas moyen de faire plus simple avec une requete préalablement créée ?

Cordialement.
0
Jean_Jacques
27 avril 2011 à 11:14
Gleude25,

Petite mise au point : Il ne faut pas prendre ce bricolo comme un outil rationnel, ce qu'il n'est pas.
Pour moi, c'est une sorte de petit banc d'essai ou ce cotoient des fonctions apparemment disparates que j'ai accumulées au fil du temps. Pour le cas où ...

Il convient donc d'y prélever, s'il y a lieu, ce qui peu vous convenir. Un peu comme dans un magasin de pièces détachées, si j'ose dire.

A propos de la liste indépendante : La recherche est gérée, en effet, par une procédure événementielle, dite sur Mise à jour, que vous trouverez dans les propriétés du champ ou apparaît la liste déroulante.

A+
0
Gleude25 Messages postés 95 Date d'inscription mardi 26 avril 2011 Statut Membre Dernière intervention 31 janvier 2013 9
27 avril 2011 à 11:25
Oui, j'avais bien compris que c'etait une petite bdd pour tester les fonctions d'access, mais que veux tu j'adore quand les choses sont bien faites ^^.

Sinon, je suis désolé, je ne trouve pas ta procédure dans les propriété du champ de ta liste deroulante. Je n'ai aucun champ renseigné dans l'onglet evennement dans les propriété. J'ai cherché également dans les donnés, il n'y a rien de special non plus...

Cordialement.
0
Jean_Jacques
27 avril 2011 à 11:51
Gleude25,
C'est vrai que ce n'est pas joli, mais j'ai pris sur moi, et m'y suis habitué...
- Par ailleurs -
J'ai vérifié. Apparemment le transit du fichier via-ci-joint a semé le désordre ...
Voici les 4 lignes de codes en question. Il agissent sur l'évènement après Mise à jour ...
Philosophiquement, il me semble que les autres solutions envisageables sont d'un niveau de ... simplicité ... comparable.

'------------------------------------------------------------
' Champ_de_Saisie_AfterUpdate()
'
'------------------------------------------------------------


With CodeContextObject
DoCmd.GoToControl "[Référence_Facture]"
DoCmd.FindRecord Champ_de_Saisie, , True, , True
End With

Cordialement
0
Jean_Jacques
27 avril 2011 à 13:08
Gleude25,
Entendu comme ça,
Je suis toujours preneur de nouvelles astuces et solutions

A+
0
Gleude25 Messages postés 95 Date d'inscription mardi 26 avril 2011 Statut Membre Dernière intervention 31 janvier 2013 9
Modifié par Gleude25 le 27/04/2011 à 13:24
Ok, je regarde ca ce soir et je te redis ca..

Par contre j'ai testé ce que tu m'as affiché au dessus, et j'ai un probleme...
Les lignes de code que tu viens de me donner servent a ajouter de nouvelles saisies, et donc mettre a jour ta base de donné. Moi tout ce que je voilais, c'etait pouvoir retrouver la reference de mon article, et d'avoir toutes les infos sur cet article.

Avec ton code, des que je cherche une reference, il me remplace dans la table de mes produits l'ancienne reference (celle que je voulais) par cele que j'ai rentré. C'est assez bizarre en fait...

La recherche de la reference, il n'y aurait pas moyen de la faire avec une macro plutot ?
0
Gleude25 Messages postés 95 Date d'inscription mardi 26 avril 2011 Statut Membre Dernière intervention 31 janvier 2013 9
Modifié par Gleude25 le 27/04/2011 à 16:32
C'est bon, j'ai réussi à faire ce que je voulais avec une liste deroulante, le probleme venait du fait que j'ai renseigné le champ "Source contrôle" dans mon champ de recherche (la liste deroulante). Je l'ai supprimé et ca marche.

Par contre ce qui m'interesserait maintenant, c'est plutot que de chercher la reference dans une liste deroulante, la chercher dans un champ.
Je m'explique, il y a une zone de texte ou je tape ma reference, et quand je lance la recherche, le fomulaire est capable de chercher dans mes tables (associés à l'article concerné) les informations qui m'interessent.
Ca serait préférable parce que je dois gérer une liste de 500 references environ, alors avec une liste deroulante, c'est même pas la peine d'y penser...

J'ai posté une nouvelle question à ce sujet sur le forum.




Et merci à toi, tu m'as vachement aidé mine de rien (j'ai découvert deux trois trucs assez sympas dans les bdd que tu m'a envoyé aussi :p ), merci !
0
Gleude25,

Pour saisir manuellement, vous devez d'abord transformer la liste déroulante en simple champ texte. Ensuite adaptez cette syntaxe à votre base de données

Au premier coup d'oeil il semble bien qu'il ne que remplacer Référence par le nom de votre choix.


With CodeContextObject
DoCmd.GoToControl "[Référence]"
DoCmd.FindRecord Champ_de_saisie, , True, , True

If Référence <> Champ_de_saisie Then
MsgBox "Ce code est inconnu : " & Me!Champ_de_saisie
Me!Champ_de_saisie = ""

End If

End With

Cordialement
0
Gleude25 Messages postés 95 Date d'inscription mardi 26 avril 2011 Statut Membre Dernière intervention 31 janvier 2013 9
28 avril 2011 à 08:26
Ok, merci de m'aider encore sur ce point.

Je ne comprends pas ce qui doit être remplacé par "[Référence]", est-ce:
1-Le champ de ma table ou je veux chercher l'informations (la reference) ?
2-La zone de texte ou j'entre ma recherche ?

Et sinon, le code que tu viens de me donner, je dois le rentrer dans quel champ ?



Ce que je veux faire exactement, c'est un un peu comme une RECHERCHEV (dans excel) de la valeur entré dans la zone de texte, et RECHERCHEV s'effectue dans la table des references.
0
Jean_Jacques
28 avril 2011 à 08:53
Gleude25,

1 - [Référence] est à remplacer par le vrai nom du champ qui contient l'information recherchée

2 - La zone de texte (Champ_de_saisie) accueille, elle, l'argument sur la foi duquel la recherche aura lieu.

Le code fourni est celui d'une procédure événementielle dite après mise à jour
Il est activé par la validation de l'argument de recherche.

Cordialement
0
Gleude25 Messages postés 95 Date d'inscription mardi 26 avril 2011 Statut Membre Dernière intervention 31 janvier 2013 9
28 avril 2011 à 10:10
Je ne comprends pas de quel champ tu parles pour la [Référence]

Voila ce que j'ai mis :
https://imageshack.com/
Ca boggue des que je tente une recherche.

Sinon, voila les onglets "données", "evennement" et "autres" de mon champ Texte17 (la ou je veux entrer la reference a chercher) :
https://imageshack.com/


Cordialement
0
Jean_Jacques Messages postés 1040 Date d'inscription mercredi 30 avril 2008 Statut Membre Dernière intervention 1 août 2014 112
28 avril 2011 à 10:18
Gleude25,

Le champ [texte17] doit être renommé Champ_de_Saisie pour être reconnu dans le code.


A+
0
Gleude25 Messages postés 95 Date d'inscription mardi 26 avril 2011 Statut Membre Dernière intervention 31 janvier 2013 9
28 avril 2011 à 10:46
Désolé ca ne marche pas. Je ne vois vraiment pas comment tu veux que je tourne ton bout de code (je ne le comprend pas).

Table [Fournisseurs]
Nom
Ref client
Code postal
Production

Table [Produits]
Ref
Description
Quantite
Fournisseur

Dans mon formulaire [Produits1], j'ai un champ de texte Champ_de_saisie, dans l'ongle evennement dans ses propriétés, je met dans "Après_Maj", "Générateur de code", et là j'entre le code que tu m'as donné, à savoir celui ci:


Private Sub Champ_de_saisie_AfterUpdate()
With CodeContextObject
DoCmd.GoToControl "Champ_de_saisie"
DoCmd.FindRecord Champ_de_saisie, , True, , True

If Champ_de_saisie <> Champ_de_saisie Then
MsgBox "Ce code est inconnu : " & Me!Champ_de_saisie
Me!Champ_de_saisie = ""

End If

End With

End Sub


Alors à partir de la, j'ai du un peu paniquer, parce que je me suis retrouver avec des "Champ_de_saisie" partout dans mon code.
C'est ca qui m'inquiete, j'ai changé les Texte17 par des "Champ_de_saisie" comme tu me l'a dis...
En tout cas ca ne marche pas, j'ai du mal te comprendre.

Cordialement.
0
Gleude25 Messages postés 95 Date d'inscription mardi 26 avril 2011 Statut Membre Dernière intervention 31 janvier 2013 9
28 avril 2011 à 14:31
Et bien écoute, je viens de me rendre compte d'un truc, c'est que dans ta liste deroulante, au lieu de chercher ta reference avec, tu peux taper ta reference dans le champ de la liste et il te la retrouve...
Je savais pas qu'on pouvait faire ca (ou je ne me souvenais plus ? ^^ )

Bref, je peux passer par ce chemin la pour faire ce que je voulais, mais j'aimerais tout de meme comprendre comment fonctionne ce que tu m'a proposé ?

Cordialement.
0
Jean_Jacques Messages postés 1040 Date d'inscription mercredi 30 avril 2008 Statut Membre Dernière intervention 1 août 2014 112
28 avril 2011 à 14:40
Gleude25,
La compréhension viendra peu à peu.
Et puis, attention, je crois me souvenir que si le code recherché n'existe pas, la procédure suggère de le créer, ou le crée spontanément, je ne sais plus bien au juste ...
A+
0
Gleude25 Messages postés 95 Date d'inscription mardi 26 avril 2011 Statut Membre Dernière intervention 31 janvier 2013 9
28 avril 2011 à 14:45
Non, pas de soucis pour ca, il n'a pas cherché à me créer de nouveau code;
en tous cas, je te remercie du temps que tu m'a accorder!

Cordialement.
0