Base de données sous ACCESS

Fermé
penteraverde Messages postés 41 Date d'inscription mercredi 27 décembre 2006 Statut Membre Dernière intervention 5 septembre 2011 - 23 juin 2009 à 15:09
penteraverde Messages postés 41 Date d'inscription mercredi 27 décembre 2006 Statut Membre Dernière intervention 5 septembre 2011 - 29 juin 2009 à 12:50
Bonjour,

Il y a quelques mois j'ai créé une base de données sous ACCESS, et maintenant nous devons la remplir!! Le problème est que je ne peux pas enregistrer de nouvelles données (sur un nouvel enregistrement). J'obtiens le message d'erreur suivant :
"Le moteur de base de données Microsoft Jet ne peut pas trouver dans la table "OS 5" le(s) champ(s) "code OS 5" correspondant à la clé. "
Voici quelques détails, j'ai relié la table OS 5 et la table MP via leur clé. J'ai ensuite créé un menu déroulant en choisissant "je veux que la liste déroulante recherche les valeurs dans une table ou une requete"
Puis j'ai choisi , table OS 5 (composé de 2champs la clé et une autre donnée nommée OS.)
J'ai donc sélectionné l'autre données (OS) pour avoir du texte et non un chiffre dans le menu déroulant.
Ensuite j'ai stocker la valeur dans le champ Code OS (qui est la clé).

Pour vérifier le bon fonctionnement de la base de données, j'avais crée les 3 premiers enregistrements, qui fonctionnent à merveille, encore maintenant!! Mais pas moyen de résoudre ce problème pour les nouveaux enregistements.

Merci pour votre aide

8 réponses

Hishira Messages postés 155 Date d'inscription mardi 25 novembre 2008 Statut Membre Dernière intervention 8 février 2011 31
23 juin 2009 à 15:37
Vérifie que tes enregistrements ne sont pas vérouillés
0
penteraverde Messages postés 41 Date d'inscription mercredi 27 décembre 2006 Statut Membre Dernière intervention 5 septembre 2011 1
23 juin 2009 à 17:09
Bonjour,

Comment faire pour vérifier que les enregistrements sont vérifiés ou non?

Merci par avance

Laura
0
zenon Messages postés 726 Date d'inscription jeudi 30 septembre 2004 Statut Membre Dernière intervention 13 février 2010 180
23 juin 2009 à 21:24
Si je comprends bien, tu travailles avec une liste déroulante.

As-tu inclus la clé primaire et correspond-elle bien à la colonne liée?

Si tu as créé la liste avec l'assistant, tu peux répéter l'opération. Access te conseille de masquer la colonne clé primaire, qu'il faut donc inclure dans ta requête.

Dans les propriétés tu peux vérifier si tu as bien 2 colonnes, la largeur de la colonne clé étant de "0cm" (pour la masquer) et la colonne liée étant dédiée à cette clé.

En l'absence de référence à la clé primaire, tu obtiens un message d'erreur en raison du code qu'Access ajoute automatiquement quand l'assistant demande quoi faire des données si la valeur renvoyée par la liste ne correspond pas aux données de la table que tu appeles.
Tu peux le voir dans les propriétés sous l'onglet événement, sur clic en... cliquant sur les 3 points à droite.

Désolé si mes explications sont trop basiques ou à côté de la plaque...
0
penteraverde Messages postés 41 Date d'inscription mercredi 27 décembre 2006 Statut Membre Dernière intervention 5 septembre 2011 1
24 juin 2009 à 10:01
Bonjour Zenon et merci pour ta réponse,

Je ne comprends pas comment j'ai fait pour remplir les 3 premiers enregistrements sans problème et qu'à partir du 4ième ca ne fonctionne plus. Sachant qu'entre temps, j'ai mis cette base de données sur différents ordinateurs de l'entreprise.

Je te donne plus d'informations:
Il s'agit de l'erreur 3101.
il s'agit d'une relation un-à-plusieurs. Sachant qu'un correspond à la table Observation Securite-5 et que plusieurs correspond à la table Matière Première. Cette relation lie code Observation Securite-5 identique dans les deux tables. La table Matière Première possède la clé principale et la table Observation Sécurité-5, une clé secondaire.

Mon but est d'arriver via un menu déroulant de choisir un champ parmi ceux de la table Observation Sécurité-5 et ensuite d'ajouter l'image correspondant à ce champ.

Je vais essayer de suivre tes instructions mais te serait-il possible de les détailler d'avantage?

En tout cas, merci pour ta réponse!

Laura
0

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

Posez votre question
zenon Messages postés 726 Date d'inscription jeudi 30 septembre 2004 Statut Membre Dernière intervention 13 février 2010 180
24 juin 2009 à 22:22
Bonsoir,

Désolé, je n'ai le temps de me connecter que le soir, ça risque de prendre un moment d'y arriver...

Si tu souhaites obtenir la liste des champs de ta table, je ne sais pas faire... (malheureusement l'aide n'est pas installée sur mon ordi et j'ai perdu le CD d'installation d'Office)

Si tu souhaites lister le contenu d'un ou de plusieurs champs, ce n'est pas difficile.

C'est peut-être la première étape de répondre à cette question.

A part ça, j'aimerais un peu mieux comprendre la structure de tes données.

Quelle est la clé primaire de chacune de tes tables, comment est-elle créée (NumAuto ou numérique)?
quels sont les champs que tu veux inclure dans ta liste?

Ca ne me semble pas étonnant que tu ne puisse pas ajouter d'enregistrement puisque, par définition, ta liste déroulante renvoie un enregistrement existant mais je ne comprends peut-être pas bien ta question.

Ta liste déroulante est dans un formulaire. Sur quelle table ou requête est il basé?

Ton erreur se produit quand tu cliques sur la liste. Tu sembles l'avoir créée avec l'assistant. Dans ce cas, Access a ajouté automatiquement du code. Pourrais-tu le communiquer? (En mode création clic droit sur la liste, tout en bas, clic sur "propriétés"; dans l'onglet "événement", sur clic,... cliquer sur les trois points à droite. la fenêtre VB s'ouvre) pourrais-tu m'envoyer un copier-coller de ce code?

Une autre possibilité serait que ta structure t'amène à essayer d'ajouter un enregistrement du "côté plusieurs" de ta relation: Si tu as une table "fruits" et une table "espèces de fruits" p ex: poire>conférence,williams,doyennée... et que tu voulais ajouter un nouveau fruit, tu ne pourrais le faire que par le biais de la table "fruits", avant d'ajouter les variétés dans la table liée (tu vois la salade?).

Encore une fois, désolé si "j'enfonce des portes ouvertes".

Guy
0
penteraverde Messages postés 41 Date d'inscription mercredi 27 décembre 2006 Statut Membre Dernière intervention 5 septembre 2011 1
24 juin 2009 à 22:55
Bonsoir,

Merci de prendre le temps de me répondre,

Voici des informations sur la structure de ma base de données:
pour les tables : - matière première (code : numAuto)
- Fabricant (code fabricant : texte)
- Fournisseur (code fournisseur : texte)
- Catégories (code catégories : texte)
- Observations de sécurité 1,2,3,4,5 et 5 (code observation de sécurité 1,... : texte)
J'ai ensuite relié les tables fabricant, fournisseur, catégories et observations de sécurité à la table matière première via des relations un-à-plusieurs
J'ai ensuite crée une requête reprennant les différents champs de ces tables.
Puis j'ai crée les formulaires fournisseurs et fabricant et ensuite un formulaire matière première avec des listes déroulantes pour les tables suivantes:
catégories, fabricant, fournisseur et les observations de sécurité.

Pourrais-tu m'expliquer la phrase suivante : "Ca ne me semble pas étonnant que tu ne puisse pas ajouter d'enregistrement puisque, par définition, ta liste déroulante renvoie un enregistrement existant".

Cette apres midi, j'ai recommencé une base de données avec les tables matières premières et observation de sécurité 1 qui pose problème. J'ai pu ajouter autant d'enregistrements que je le souhaitais?
Mais le problème est le meme dans la base de données entière, le principe étant le meme pour les listes déroulantes catégories, fournisseurs et fabricant, pourquoi je rencontre le problème sur les observations de sécurité??

Voici, ce que j'obtiens quand je suis la procédure que tu m'as indiqué:

Option Compare Database

Private Sub Commande160_Click()
On Error GoTo Err_Commande160_Click


DoCmd.DoMenuItem acFormBar, acEditMenu, 8, , acMenuVer70
DoCmd.PrintOut acSelection

Exit_Commande160_Click:
Exit Sub

Err_Commande160_Click:
MsgBox Err.description
Resume Exit_Commande160_Click

End Sub
Private Sub Commande161_Click()
On Error GoTo Err_Commande161_Click


DoCmd.DoMenuItem acFormBar, acRecordsMenu, acSaveRecord, , acMenuVer70

Exit_Commande161_Click:
Exit Sub

Err_Commande161_Click:
MsgBox Err.description
Resume Exit_Commande161_Click

End Sub

Private Sub Modifiable153_Click()

End Sub

J'espère que cela t'aidera à pouvoir cerner avec précision mon problème!!

Merci par avance

Laura
0
zenon Messages postés 726 Date d'inscription jeudi 30 septembre 2004 Statut Membre Dernière intervention 13 février 2010 180
25 juin 2009 à 18:09
Merci pour ces infos, mais je ne vois toujours pas bien où tu veux en venir...

Tu dis que, dans ta liste déroulante, tu as choisi le champ qui contient du texte pour ne pas avoir le code.
Ensuite, tu dis que tu vas stocker le résultat dans le champ Code OS, la clé.

Si ta liste déroulante ne contient que la colonne qui comporte du texte, elle renvoie du texte et tu ne peux pas l'ajouter dans le champ clé primaire. Mais si le problème était là je pense que tu aurais plutôt une erreur d'incompatibilité de données.

Au point où on en est, ne penses-tu pas que le plus simple serait que tu m'envoies une une copie de ta base, sans les données, et si tu veux seulement les tables et formulaire(s) qui posent problème. Je pense que j'aurais beaucoup moins de mal à comprendre.

Sinon, je ne comprends pas ce que tu veux faire de la données renvoyée par ta liste. L'ajouter à une autre table comme clé externe?

Enfin, n'oublie pas qu'Access a des pb avec les espaces, accents et caractères "spéciaux". On peut les utiliser mais il faut mettre des crochets: [Code OS 5], par exemple. Si je comprends bien, ta liste est faite avec l'assistant et le problème ne devait donc pas être là...

Je t'envoie un message privé pour te communiquer mon adresse mail.

Guy
0
penteraverde Messages postés 41 Date d'inscription mercredi 27 décembre 2006 Statut Membre Dernière intervention 5 septembre 2011 1
29 juin 2009 à 12:50
Bonjour,

J'ai trouvé une solution au problème que je vous avais énoncé ci-dessus!!
En fait, cette erreur arrive lorsque l'on ne prend pas le temps de choisir une données dans les listes déroulantes.
Dans ce cas, je ne donnais aucune valeur meme un champ nul pour les menus déroulant donc access ne pouvait pas trouver les données correspondantes dans la table!!
Ceci explique que j'avais pu remplir les 3premiers enregistrements seulement!!

Merci à tout ceux qui m'ont aidé!!

Bonne journée
0