ACCESS - Pb de primary key auto à l'ajout d'une table/req
Fermé
ALESS
-
27 mai 2022 à 23:39
yg_be Messages postés 23304 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 1 novembre 2024 - 30 mai 2022 à 19:31
yg_be Messages postés 23304 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 1 novembre 2024 - 30 mai 2022 à 19:31
A voir également:
- ACCESS - Pb de primary key auto à l'ajout d'une table/req
- Table ascii - Guide
- Table des matières word - Guide
- Exemple base de données access à télécharger gratuit - Forum Access
- Table des annexes word ✓ - Forum Word
- Ajout rapide snap - Forum Snapchat
7 réponses
jee pee
Messages postés
40401
Date d'inscription
mercredi 2 mai 2007
Statut
Modérateur
Dernière intervention
1 novembre 2024
9 403
Modifié le 28 mai 2022 à 12:10
Modifié le 28 mai 2022 à 12:10
Bonjour,
Je ne pratique pas du tout Access, c'est juste une suggestion sur le principe.
Si tes tables à fusionner sont du type (id, champ1, champ2, ...), tu vas créer une nouvelle table avec les mêmes champs mais il faut indiquer que id est de type autoincrément, alors c'est le système qui l'insère et le génère. Et après tu remplis cette table en spécifiant les champs, sauf id, avec
Ou comme tu n'as pas besoin de l'id, tu peux créer une table sans cle (champ1, champ2) et la remplir avec la même requête.
Je ne pratique pas du tout Access, c'est juste une suggestion sur le principe.
Si tes tables à fusionner sont du type (id, champ1, champ2, ...), tu vas créer une nouvelle table avec les mêmes champs mais il faut indiquer que id est de type autoincrément, alors c'est le système qui l'insère et le génère. Et après tu remplis cette table en spécifiant les champs, sauf id, avec
insert tfusion (champ1, champ2) select champ1, champ2 from t1 union select champ1, champ2 from t2 union ...
Ou comme tu n'as pas besoin de l'id, tu peux créer une table sans cle (champ1, champ2) et la remplir avec la même requête.
blackmefias_3350
Messages postés
707
Date d'inscription
dimanche 20 septembre 2020
Statut
Membre
Dernière intervention
23 septembre 2024
59
Modifié le 28 mai 2022 à 12:48
Modifié le 28 mai 2022 à 12:48
bonjour,
voici dans l'ordre ce que vous devez faire :
1) création des tables
exemple pour une base de gestion des stocks j'ai créer une table et je l'enregistre directement sous
le nom de : T_Categories
ici les paramètres du champ ID_Categories
Veuillez voir qu'ici j'évite de mettre des accents aussi bien sur le nom de mes tables que dans les noms des champs ceci est fait exprès pour une meilleur interprétation de la police, avec ou sans sérif .
une fois que ma première table est créée, je vais changer le champ NomCategorie pour que celui-ci devient un champ de liste déroulante .
pour cela je sélectionne le champ ici mis en jaune
et dans les paramètre du champ, je vais sur l'onglet liste de choix et je déroule la liste comme ici
Ensuite , toujours dans les paramètres du champ , dans les propriétés de la liste déroulante,
je vais sur la propriété "Origine source" je change pour 'liste valeurs" dans "contenu" et dans la cellule de droite je saisi mes données de la liste notez que celles-ci doivent être séparée par ; (point virgule) :
dans cette table, je peux enfin mettre ou ajouter des données par exemple dans le champ description.
ensuite je crée ma deuxième table et je l'enregistre directement sous le nom de T_objets
je repasse en mode données et ajoute quelques données
2) créer des relations entre ces tables Attention il ne faut pas confondre les relations et les requêtes elles n'ont pas le même rôle
pour créer une relation entre deux tables, il vous faut deux tables, mais surtout il faut qu'une des deux table contient un champs supplémentaire que l'on ajoute en fin de table il faut aussi que le type de données soit de même valeur , par exemple je peux pas mettre du texte dans une relation de table avec du numérique ( nombres )
Veuillez voir que j'ai dans ma table T_Objets ajouter un champ "ID_categories" dont le type de données est "Numérique" vous pouvez l'ajouter soit directement sur votre table en mode création soit depuis l'outil relation , il vous suffira alors de sélectionner une table( ici T_objet) faire un click droit et choisir mode création .
pour faire une relation vos table doivent ressembler à ceci :
Ici, la relation entre les deux tables indique qu'une catégorie peut au minimum contenir 1 à plusieurs objets
MLD = Modèle Logique des données
MCD = Modèle Conceptuel des données
voir : Méthode merise
je fait la relation entre le champ ID_Categories de la table T_Categories et le champ ID_categories de la table T_Objets
je quitte et enregistre la relation
et je retourne dans la table T_Categories que j'ouvre en mode" feuille de données"
dans mon exemple, il existe trois catégories GrosElectro, PetitsElectro et Meubles
dans table T_objets mon premier Objet est une table à manger donc elle se trouve dans la catégorie Meubles
pour la table T_categories, j'ai décidé que GrosElectro est sur le premier enregistrement du champ ID_Catégories comme celui-ci est un champ indexé et autoincrément, il recevra comme ID 1 , PetitElectro aura 2 dans le champ ID et Meubles aura 3 dans le champ ID de la table T_Categories.
j'espère que mon explication est claire pour vous car elle n'est pas facile à définir
donc je reviens dans ma table T_Categories et je peux voir alors un petite case avec un + si je click dessus, j'ouvre la table T_Objets et peux voir ainsi par ligne tous les objets qui se trouvent dans la catégories Meubles par exemple
Veuillez voir que j'ai cliqué sur la + de la troisième ligne de ta table T_Categories et ainsi je peux voir les données qui se rapportent à l'ID 3 dont la valeur est : Meubles .
3) créer une ou des requêtes (les requêtes permettant de faire des recherches, tris sur les tables)
4) créer le ou les formulaires et voir sous-formulaires
par contre si vous importez des tables, dans le choix de créer une clé primaire , je vous suggère plûtot de choisir par vous même le champs ID car si vous le faites automatiquement, le champs ID sera ajouter à votre table qui en possède peut être déjà une.
voici dans l'ordre ce que vous devez faire :
1) création des tables
exemple pour une base de gestion des stocks j'ai créer une table et je l'enregistre directement sous
le nom de : T_Categories
ici les paramètres du champ ID_Categories
Veuillez voir qu'ici j'évite de mettre des accents aussi bien sur le nom de mes tables que dans les noms des champs ceci est fait exprès pour une meilleur interprétation de la police, avec ou sans sérif .
une fois que ma première table est créée, je vais changer le champ NomCategorie pour que celui-ci devient un champ de liste déroulante .
pour cela je sélectionne le champ ici mis en jaune
et dans les paramètre du champ, je vais sur l'onglet liste de choix et je déroule la liste comme ici
Ensuite , toujours dans les paramètres du champ , dans les propriétés de la liste déroulante,
je vais sur la propriété "Origine source" je change pour 'liste valeurs" dans "contenu" et dans la cellule de droite je saisi mes données de la liste notez que celles-ci doivent être séparée par ; (point virgule) :
dans cette table, je peux enfin mettre ou ajouter des données par exemple dans le champ description.
ensuite je crée ma deuxième table et je l'enregistre directement sous le nom de T_objets
je repasse en mode données et ajoute quelques données
2) créer des relations entre ces tables Attention il ne faut pas confondre les relations et les requêtes elles n'ont pas le même rôle
pour créer une relation entre deux tables, il vous faut deux tables, mais surtout il faut qu'une des deux table contient un champs supplémentaire que l'on ajoute en fin de table il faut aussi que le type de données soit de même valeur , par exemple je peux pas mettre du texte dans une relation de table avec du numérique ( nombres )
Veuillez voir que j'ai dans ma table T_Objets ajouter un champ "ID_categories" dont le type de données est "Numérique" vous pouvez l'ajouter soit directement sur votre table en mode création soit depuis l'outil relation , il vous suffira alors de sélectionner une table( ici T_objet) faire un click droit et choisir mode création .
pour faire une relation vos table doivent ressembler à ceci :
Ici, la relation entre les deux tables indique qu'une catégorie peut au minimum contenir 1 à plusieurs objets
MLD = Modèle Logique des données
MCD = Modèle Conceptuel des données
voir : Méthode merise
je fait la relation entre le champ ID_Categories de la table T_Categories et le champ ID_categories de la table T_Objets
je quitte et enregistre la relation
et je retourne dans la table T_Categories que j'ouvre en mode" feuille de données"
dans mon exemple, il existe trois catégories GrosElectro, PetitsElectro et Meubles
dans table T_objets mon premier Objet est une table à manger donc elle se trouve dans la catégorie Meubles
pour la table T_categories, j'ai décidé que GrosElectro est sur le premier enregistrement du champ ID_Catégories comme celui-ci est un champ indexé et autoincrément, il recevra comme ID 1 , PetitElectro aura 2 dans le champ ID et Meubles aura 3 dans le champ ID de la table T_Categories.
j'espère que mon explication est claire pour vous car elle n'est pas facile à définir
donc je reviens dans ma table T_Categories et je peux voir alors un petite case avec un + si je click dessus, j'ouvre la table T_Objets et peux voir ainsi par ligne tous les objets qui se trouvent dans la catégories Meubles par exemple
Veuillez voir que j'ai cliqué sur la + de la troisième ligne de ta table T_Categories et ainsi je peux voir les données qui se rapportent à l'ID 3 dont la valeur est : Meubles .
3) créer une ou des requêtes (les requêtes permettant de faire des recherches, tris sur les tables)
4) créer le ou les formulaires et voir sous-formulaires
par contre si vous importez des tables, dans le choix de créer une clé primaire , je vous suggère plûtot de choisir par vous même le champs ID car si vous le faites automatiquement, le champs ID sera ajouter à votre table qui en possède peut être déjà une.
@jee pee:
Merci beaucoup pour votre réponse, j'ai essayé de faire sans l'ID effectivement mais il refuse si le nombre et les champs ne sont pas strictement identiques :(
@ blackmefias:
Merci beaucoup pour votre réponse, là est justement le problème: je ne peux pas partir d'une nouvelle table et tout recréer. Il y a une base access avec toutes les tables toutes les relations, et des ID en numéro auto et clé primaire dont je n'arrive pas à modifier le statut (avec doublons, retrait de la clé). En fait la société pour laquelle je viens de démarrer ce nouveau job a tout simplement dupliqué une base access avec plein de tables, plein de relations, plein de règle sd'intégrité, et il faudrait tout compiler. Merci en tout cas pour le soin apporté à la description, cela va m'être très utile pour la suite et dans mon apprentissage d'Access!
Merci beaucoup pour votre réponse, j'ai essayé de faire sans l'ID effectivement mais il refuse si le nombre et les champs ne sont pas strictement identiques :(
@ blackmefias:
Merci beaucoup pour votre réponse, là est justement le problème: je ne peux pas partir d'une nouvelle table et tout recréer. Il y a une base access avec toutes les tables toutes les relations, et des ID en numéro auto et clé primaire dont je n'arrive pas à modifier le statut (avec doublons, retrait de la clé). En fait la société pour laquelle je viens de démarrer ce nouveau job a tout simplement dupliqué une base access avec plein de tables, plein de relations, plein de règle sd'intégrité, et il faudrait tout compiler. Merci en tout cas pour le soin apporté à la description, cela va m'être très utile pour la suite et dans mon apprentissage d'Access!
blackmefias_3350
Messages postés
707
Date d'inscription
dimanche 20 septembre 2020
Statut
Membre
Dernière intervention
23 septembre 2024
59
29 mai 2022 à 21:50
29 mai 2022 à 21:50
pour bien débuter access, je vous suggère de visiter ce site grenier.self-access.com
yg_be
Messages postés
23304
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
1 novembre 2024
1 549
30 mai 2022 à 12:38
30 mai 2022 à 12:38
Il serait utile que tu donnes des détails sur les champs de tes tables.
Quel message d'erreur reçois-tu?
Quel message d'erreur reçois-tu?
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
@yg_be bonjour!
j'ai plusieurs bases access de structure identique (tables, formulaires, requêtes, relations). Le problème est qu'il y a des tables à fusionner comportant des clés primaires en num auto et des clés secondaires. les opérations effectuées:
1. ouverture d'une des bases
2. import de toutes les autres tables des autres bases
3. union des tables importées de structure identique (parfois ça déconnait à cause d'un champ manquant, corrigé)
4. ajout de cette union à la table "d'accueil" déjà présent, pour chacune des tables = BIG FAIL à cause du numéro auto
5. Retrait de la clé primaire de la requête puis ajout = FAIL
Retrait du champ carrément ID puis ajout = FAIL
Tentative de modification du champ ID d"accueil" - retrait clé primaire et/ou suppression du champ ID (étant donné qu'en plus ce champ n'est utilisé dans AUCUNE relation! apparemment)
FAIL FAIL FAIL
6. Export sous Excel des requêtes, incrémentation manuelle de l'ID, import dans base puis ajout table OK, sur plusieurs tables 2 avec seulement un enregistrment posant problème, et par contre une table bien KO avec 964 enregistrements en FAIL sur 3297.
7. Impossible d'ouvrir un des formulaires le paramètre de la propriété ChampsPères est à l'origine de l'erreur suivante un pb est survenu durant la communication entre microsoft access et le serveur OLE ou le controle ActiveX
j'ai plusieurs bases access de structure identique (tables, formulaires, requêtes, relations). Le problème est qu'il y a des tables à fusionner comportant des clés primaires en num auto et des clés secondaires. les opérations effectuées:
1. ouverture d'une des bases
2. import de toutes les autres tables des autres bases
3. union des tables importées de structure identique (parfois ça déconnait à cause d'un champ manquant, corrigé)
4. ajout de cette union à la table "d'accueil" déjà présent, pour chacune des tables = BIG FAIL à cause du numéro auto
5. Retrait de la clé primaire de la requête puis ajout = FAIL
Retrait du champ carrément ID puis ajout = FAIL
Tentative de modification du champ ID d"accueil" - retrait clé primaire et/ou suppression du champ ID (étant donné qu'en plus ce champ n'est utilisé dans AUCUNE relation! apparemment)
FAIL FAIL FAIL
6. Export sous Excel des requêtes, incrémentation manuelle de l'ID, import dans base puis ajout table OK, sur plusieurs tables 2 avec seulement un enregistrment posant problème, et par contre une table bien KO avec 964 enregistrements en FAIL sur 3297.
7. Impossible d'ouvrir un des formulaires le paramètre de la propriété ChampsPères est à l'origine de l'erreur suivante un pb est survenu durant la communication entre microsoft access et le serveur OLE ou le controle ActiveX
yg_be
Messages postés
23304
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
1 novembre 2024
1 549
30 mai 2022 à 15:21
30 mai 2022 à 15:21
Tu ne donnes aucune information sur la structure de tes tables, la source SQL de tes requêtes, ni sur les messages d'erreur.
les structures des tables sont identiques ce qui compte c'est quelles ont toutes un ID en autoincrement, le reste ça roule
Pour les requetes c'est du UNION, et puis ensuite du INSERT INTO
Les messages d'erreur "XXX enregistrements n'ont pu être ajoutés en raison de violation de clé"
Là j'ai réussi à toutes les intégrer mis à part la dernière table ou je rencontre beaucoup d'enregistrements refusés
et le dernier problème que je n'arrive pas à résoudre c'est l'ouverture du formulaire "Le paramètre de la propriété ChampsPères est à l'origine del'erreur suivante: un pb est sruvenu durant la communicayion entre Microsoft Access et le serveur OLE ou le controle ActiveX" => l'expression sur ouverture entrée comme paramètre de la propriété d'évènement est à l'origine d'une erreur"
Pour les requetes c'est du UNION, et puis ensuite du INSERT INTO
Les messages d'erreur "XXX enregistrements n'ont pu être ajoutés en raison de violation de clé"
Là j'ai réussi à toutes les intégrer mis à part la dernière table ou je rencontre beaucoup d'enregistrements refusés
et le dernier problème que je n'arrive pas à résoudre c'est l'ouverture du formulaire "Le paramètre de la propriété ChampsPères est à l'origine del'erreur suivante: un pb est sruvenu durant la communicayion entre Microsoft Access et le serveur OLE ou le controle ActiveX" => l'expression sur ouverture entrée comme paramètre de la propriété d'évènement est à l'origine d'une erreur"
yg_be
Messages postés
23304
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
1 novembre 2024
1 549
30 mai 2022 à 19:24
30 mai 2022 à 19:24
Tu ne donnes aucune information sur la source SQL de tes requêtes.
yg_be
Messages postés
23304
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
1 novembre 2024
1 549
30 mai 2022 à 19:31
30 mai 2022 à 19:31
si ta requête INSERT donne une erreur "violation de clé", c'est que tu n'as pas défini ta table de destination comme tu expliques "Retrait de la clé primaire de la requête", ou bien que tu as une autre clé unique dans cette table.
Pardon je ne comprends pas. Je fais des simples ajout et union sur les tables que j ai préalablement importées dans ma base un simple insert into et union
yg_be
Messages postés
23304
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
1 novembre 2024
1 549
Modifié le 30 mai 2022 à 19:35
Modifié le 30 mai 2022 à 19:35
visualise tes requêtes en mode "SQL", puis partage ici le texte affiché.