OVH Cloud OVH Cloud

Violation de clé

10 réponses
Avatar
La Mouette
Bonjour!

J'ai encore honnêtement besoin d'aide! J'ai fouillé les archives pour
trouver réponse à mon problème sans succès, même si plusieurs personnes
avaient le même problème.

J'ai deux bases, copie conforme l'une de l'autre. Quand je suis dans la
première, je fais des requêtes insert pour mettre des données dans la
deuxième. Je fais attention aux relations alors j'insert les bonnes tables en
premier. Mais j'ai quelques tables dont je ne suis pas capable d'ajouter des
données à cause d'une erreur de "violation de clé"

J'ai une table "Dossiers" qui contient deux clés primaires: "Groupe" et
"Dossier". J'ai entré les données dans cette table sans problème. Maintenant
j'ai quelques tables rattachés à cette table là. Qui ont eux aussi comme clé
primaire "Groupe", "Dossier", plus un NumeroAuto. Sauf que c'est seulement le
Groupe et le Dossier qui sont reliés à la table Dossiers. Que ce soit une
relation 1-1 ou 1-INFINI, ca ne fonctionne pas. Alors que je SAIS que les
nouvelles données que j'essaie de rentrer ont des "Groupe" et "Dossier" qui
sont PRESENTS dans la tables "Dossiers". (Et ce n'est pas non plus une erreur
de doublon, car la table est vide)

Aussi quand je fais mes requêtes INSERT, j'insers aussi le NumeroAuto car je
veux garder le même, c'est correct?

Merci d'avance

10 réponses

Avatar
Raymond [mvp]
Aussi quand je fais mes requêtes INSERT, j'insers aussi le NumeroAuto car
je
veux garder le même, c'est correct?

pas du tout.

si tu indiques un numauto dans une requête insert il faut que le numéro
soit libre. si tu ne veux pas avoir de doublons il ne faut pas insérer le
numauto. Si le numauto n'est pas en relation avec une autre table tu peux
insérer les enregistrements sans le numauto sans problème. Dans le cas
d'insertion du numauto, il faut bien sûr que le numéro soit libre mais en
plus il faudra, à la fin, insérer un numauto qui ait une valeur supérieure à
la valeur maxi actuelle pour que le prochain incrément ne rencontre pas de
doublons.
donc,
si ton numauto n'est pas en relation avec une table, tu insères tous les
champs sauf le numauto, pas de problème
si ton numauto est en relation avec une table (donc clé primaire), il y a
problème car doublons dans les clés primaires.

--
@+
Raymond Access MVP
http://access.seneque.free.fr/
http://access.vba.free.fr/
http://access2003.free.fr/
http://users.skynet.be/mpfa/ pour débuter sur le forum


"La Mouette" a écrit dans le message
de news:
Bonjour!

J'ai encore honnêtement besoin d'aide! J'ai fouillé les archives pour
trouver réponse à mon problème sans succès, même si plusieurs personnes
avaient le même problème.

J'ai deux bases, copie conforme l'une de l'autre. Quand je suis dans la
première, je fais des requêtes insert pour mettre des données dans la
deuxième. Je fais attention aux relations alors j'insert les bonnes tables
en
premier. Mais j'ai quelques tables dont je ne suis pas capable d'ajouter
des
données à cause d'une erreur de "violation de clé"

J'ai une table "Dossiers" qui contient deux clés primaires: "Groupe" et
"Dossier". J'ai entré les données dans cette table sans problème.
Maintenant
j'ai quelques tables rattachés à cette table là. Qui ont eux aussi comme
clé
primaire "Groupe", "Dossier", plus un NumeroAuto. Sauf que c'est seulement
le
Groupe et le Dossier qui sont reliés à la table Dossiers. Que ce soit une
relation 1-1 ou 1-INFINI, ca ne fonctionne pas. Alors que je SAIS que les
nouvelles données que j'essaie de rentrer ont des "Groupe" et "Dossier"
qui
sont PRESENTS dans la tables "Dossiers". (Et ce n'est pas non plus une
erreur
de doublon, car la table est vide)

Aussi quand je fais mes requêtes INSERT, j'insers aussi le NumeroAuto car
je
veux garder le même, c'est correct?

Merci d'avance




Avatar
Ilan
Bonsoir,
Les champs NumeroAuto sont geres par Access.
Si tu tentes de les modifier tu obtiens l'erreur que tu signales.
Si tu veux conserver le n° mais dans ta table le champ correspondant en type
numerique.



Bonjour!

J'ai encore honnêtement besoin d'aide! J'ai fouillé les archives pour
trouver réponse à mon problème sans succès, même si plusieurs personnes
avaient le même problème.

J'ai deux bases, copie conforme l'une de l'autre. Quand je suis dans la
première, je fais des requêtes insert pour mettre des données dans la
deuxième. Je fais attention aux relations alors j'insert les bonnes tables en
premier. Mais j'ai quelques tables dont je ne suis pas capable d'ajouter des
données à cause d'une erreur de "violation de clé"

J'ai une table "Dossiers" qui contient deux clés primaires: "Groupe" et
"Dossier". J'ai entré les données dans cette table sans problème. Maintenant
j'ai quelques tables rattachés à cette table là. Qui ont eux aussi comme clé
primaire "Groupe", "Dossier", plus un NumeroAuto. Sauf que c'est seulement le
Groupe et le Dossier qui sont reliés à la table Dossiers. Que ce soit une
relation 1-1 ou 1-INFINI, ca ne fonctionne pas. Alors que je SAIS que les
nouvelles données que j'essaie de rentrer ont des "Groupe" et "Dossier" qui
sont PRESENTS dans la tables "Dossiers". (Et ce n'est pas non plus une erreur
de doublon, car la table est vide)

Aussi quand je fais mes requêtes INSERT, j'insers aussi le NumeroAuto car je
veux garder le même, c'est correct?

Merci d'avance




Avatar
La Mouette
Ok c'est noté pour le numéroAuto, mais ca n'empêche pas que j'ai une erreur
de Violation de Clé pareil!

Merci!


Bonsoir,
Les champs NumeroAuto sont geres par Access.
Si tu tentes de les modifier tu obtiens l'erreur que tu signales.
Si tu veux conserver le n° mais dans ta table le champ correspondant en type
numerique.



Bonjour!

J'ai encore honnêtement besoin d'aide! J'ai fouillé les archives pour
trouver réponse à mon problème sans succès, même si plusieurs personnes
avaient le même problème.

J'ai deux bases, copie conforme l'une de l'autre. Quand je suis dans la
première, je fais des requêtes insert pour mettre des données dans la
deuxième. Je fais attention aux relations alors j'insert les bonnes tables en
premier. Mais j'ai quelques tables dont je ne suis pas capable d'ajouter des
données à cause d'une erreur de "violation de clé"

J'ai une table "Dossiers" qui contient deux clés primaires: "Groupe" et
"Dossier". J'ai entré les données dans cette table sans problème. Maintenant
j'ai quelques tables rattachés à cette table là. Qui ont eux aussi comme clé
primaire "Groupe", "Dossier", plus un NumeroAuto. Sauf que c'est seulement le
Groupe et le Dossier qui sont reliés à la table Dossiers. Que ce soit une
relation 1-1 ou 1-INFINI, ca ne fonctionne pas. Alors que je SAIS que les
nouvelles données que j'essaie de rentrer ont des "Groupe" et "Dossier" qui
sont PRESENTS dans la tables "Dossiers". (Et ce n'est pas non plus une erreur
de doublon, car la table est vide)

Aussi quand je fais mes requêtes INSERT, j'insers aussi le NumeroAuto car je
veux garder le même, c'est correct?

Merci d'avance






Avatar
Ilan
1) envoie un extrait de ta requete qu'on voit un peu mieux ou se trouve
l'erreur.
2) juste pour mon info perso quel est l'ordre de tes champs dans la table
Exemple :
Champ 1 : NumeroAuto
Champ 2 : Dossier
Champ 3 : Groupe




Ok c'est noté pour le numéroAuto, mais ca n'empêche pas que j'ai une erreur
de Violation de Clé pareil!

Merci!


Bonsoir,
Les champs NumeroAuto sont geres par Access.
Si tu tentes de les modifier tu obtiens l'erreur que tu signales.
Si tu veux conserver le n° mais dans ta table le champ correspondant en type
numerique.



Bonjour!

J'ai encore honnêtement besoin d'aide! J'ai fouillé les archives pour
trouver réponse à mon problème sans succès, même si plusieurs personnes
avaient le même problème.

J'ai deux bases, copie conforme l'une de l'autre. Quand je suis dans la
première, je fais des requêtes insert pour mettre des données dans la
deuxième. Je fais attention aux relations alors j'insert les bonnes tables en
premier. Mais j'ai quelques tables dont je ne suis pas capable d'ajouter des
données à cause d'une erreur de "violation de clé"

J'ai une table "Dossiers" qui contient deux clés primaires: "Groupe" et
"Dossier". J'ai entré les données dans cette table sans problème. Maintenant
j'ai quelques tables rattachés à cette table là. Qui ont eux aussi comme clé
primaire "Groupe", "Dossier", plus un NumeroAuto. Sauf que c'est seulement le
Groupe et le Dossier qui sont reliés à la table Dossiers. Que ce soit une
relation 1-1 ou 1-INFINI, ca ne fonctionne pas. Alors que je SAIS que les
nouvelles données que j'essaie de rentrer ont des "Groupe" et "Dossier" qui
sont PRESENTS dans la tables "Dossiers". (Et ce n'est pas non plus une erreur
de doublon, car la table est vide)

Aussi quand je fais mes requêtes INSERT, j'insers aussi le NumeroAuto car je
veux garder le même, c'est correct?

Merci d'avance








Avatar
Raymond [mvp]
Tu peux avoir une autre violation de clé sur un index sans doublon. as-tu
vérifié que tu n'as pas d'index sans doublon ? et si oui vérifie les valeurs
de ce champ.

--
@+
Raymond Access MVP
http://access.seneque.free.fr/
http://access.vba.free.fr/
http://access2003.free.fr/
http://users.skynet.be/mpfa/ pour débuter sur le forum


"La Mouette" a écrit dans le message
de news:
Ok c'est noté pour le numéroAuto, mais ca n'empêche pas que j'ai une
erreur
de Violation de Clé pareil!



Avatar
La Mouette
Encore bonjour à vous. Merci de me répondre! :)

Bon, l'ordre est le suivant:
NumeroAuto
Groupe
Dossier

Mais j'ai des tables qui ne contiennent pas de NumeroAuto, juste Groupe et
Dossier et que ca ne fonctionne pas pareil.

Voici un exemple de requête:

DoCmd.RunSQL ("INSERT INTO Plumitif ( idGroupe, idDossier, Description,
Montant) IN '...Jurismaitre_Archives.mdb' SELECT idGroupe, idDossier,
Description, Montant FROM ArchivesPlumitif")

Et pour répondre à Raymond, je n'ai pas d'index sans doublon, j'avais
vérifié, mais de toute facon, le problème ne vient ni de la requête ni de la
table, mais de la relation entre les deux tables. Parce que lorsque je retire
la relation 1-1 ou 1-INFINI d'avec la table "Dossiers", ca fonctionne.

Merci encore!




Tu peux avoir une autre violation de clé sur un index sans doublon. as-tu
vérifié que tu n'as pas d'index sans doublon ? et si oui vérifie les valeurs
de ce champ.

--
@+
Raymond Access MVP
http://access.seneque.free.fr/
http://access.vba.free.fr/
http://access2003.free.fr/
http://users.skynet.be/mpfa/ pour débuter sur le forum


"La Mouette" a écrit dans le message
de news:
Ok c'est noté pour le numéroAuto, mais ca n'empêche pas que j'ai une
erreur
de Violation de Clé pareil!








Avatar
Daniel Carollo
Bonjour La Mouette (et Raymond et Ilan)!

Je crois que vous faites fausse route: il est tout a fait possible d'inserer
des enregistrements en specifiant le numero auto. Je le fais regulierement
pour "boucher les trous". Il n'est pas possible de _modifier_ les valeurs,
mais l'insertion passe tres bien.

Si vos tables secondaires (celles que vous ne nommez pas) contient pour
clefs primaires Groupes et Dossiers, c'est la qu'est le probleme. Ces champs
sont des clefs externes, mais surtout pas primaires...

Enlevez les clefs de ces deux champs et refaites vos requetes d'insertion.
Il est possible (et meme tout a fait probable) que des Index sur ces champs
soient indiques pour ameliorer la performance, et surtout mettre en place
l'integrite referentielle, mais je repete qu'l ne faut pas que ces champs
soient des clefs _primaires_.

J'espere que ca vous donne des pistes.


--
Daniel :-)

Computing Technologies International - www.computing-tech.com - We
provide solutions...

"La Mouette" wrote in message
news:
Ok c'est noté pour le numéroAuto, mais ca n'empêche pas que j'ai une
erreur

de Violation de Clé pareil!

Merci!


Bonsoir,
Les champs NumeroAuto sont geres par Access.
Si tu tentes de les modifier tu obtiens l'erreur que tu signales.
Si tu veux conserver le n° mais dans ta table le champ correspondant en
type


numerique.



Bonjour!

J'ai encore honnêtement besoin d'aide! J'ai fouillé les archives pour
trouver réponse à mon problème sans succès, même si plusieurs
personnes



avaient le même problème.

J'ai deux bases, copie conforme l'une de l'autre. Quand je suis dans
la



première, je fais des requêtes insert pour mettre des données dans la
deuxième. Je fais attention aux relations alors j'insert les bonnes
tables en



premier. Mais j'ai quelques tables dont je ne suis pas capable
d'ajouter des



données à cause d'une erreur de "violation de clé"

J'ai une table "Dossiers" qui contient deux clés primaires: "Groupe"
et



"Dossier". J'ai entré les données dans cette table sans problème.
Maintenant



j'ai quelques tables rattachés à cette table là. Qui ont eux aussi
comme clé



primaire "Groupe", "Dossier", plus un NumeroAuto. Sauf que c'est
seulement le



Groupe et le Dossier qui sont reliés à la table Dossiers. Que ce soit
une



relation 1-1 ou 1-INFINI, ca ne fonctionne pas. Alors que je SAIS que
les



nouvelles données que j'essaie de rentrer ont des "Groupe" et
"Dossier" qui



sont PRESENTS dans la tables "Dossiers". (Et ce n'est pas non plus une
erreur



de doublon, car la table est vide)

Aussi quand je fais mes requêtes INSERT, j'insers aussi le NumeroAuto
car je



veux garder le même, c'est correct?

Merci d'avance








Avatar
La Mouette
Bonjour!

J'ai essayé d'exporter mes données dans la nouvelle base en ayant enlevé
Groupe-Dossier des clés primaire de la base cible, mais ça ne marche toujours
pas.

J'ai trois tables dont je n'ai aucun problème à inserer:
Dossiers: cléPrimaire: idGroupe, idDossier

Debiteurs: cléPrimaire: idGroupe, idDossier, idDebiteur (Ca marche même si
idGroupe et idDossier sont des clés primaire) Sauf que cette table n'a pas de
lien directement avec Dossiers.

Cheques: cléPrimaire: idGroupe, idDossier, idCheque (Ca marche et cette
table est en relation avec Débiteurs sous idGroupe-idGroupe,
idDossier-idDossier, ... ) Et ca marche malgré la relation.

DONC pourquoi que mes autres tables exemple

Plumitif: cléPrimaire: idGroupe, idDossier, idPlumitif etant en relation
avec Dossiers sur idGroupe-idGroupe et idDossier-idDossier NE FONCTIONNE PAS!

Quand j'enlève la relation ca marche?

Merci de votre aide grandement appréciée!



Bonjour La Mouette (et Raymond et Ilan)!

Je crois que vous faites fausse route: il est tout a fait possible d'inserer
des enregistrements en specifiant le numero auto. Je le fais regulierement
pour "boucher les trous". Il n'est pas possible de _modifier_ les valeurs,
mais l'insertion passe tres bien.

Si vos tables secondaires (celles que vous ne nommez pas) contient pour
clefs primaires Groupes et Dossiers, c'est la qu'est le probleme. Ces champs
sont des clefs externes, mais surtout pas primaires...

Enlevez les clefs de ces deux champs et refaites vos requetes d'insertion.
Il est possible (et meme tout a fait probable) que des Index sur ces champs
soient indiques pour ameliorer la performance, et surtout mettre en place
l'integrite referentielle, mais je repete qu'l ne faut pas que ces champs
soient des clefs _primaires_.

J'espere que ca vous donne des pistes.


--
Daniel :-)

Computing Technologies International - www.computing-tech.com - We
provide solutions...

"La Mouette" wrote in message
news:
Ok c'est noté pour le numéroAuto, mais ca n'empêche pas que j'ai une
erreur

de Violation de Clé pareil!

Merci!


Bonsoir,
Les champs NumeroAuto sont geres par Access.
Si tu tentes de les modifier tu obtiens l'erreur que tu signales.
Si tu veux conserver le n° mais dans ta table le champ correspondant en
type


numerique.



Bonjour!

J'ai encore honnêtement besoin d'aide! J'ai fouillé les archives pour
trouver réponse à mon problème sans succès, même si plusieurs
personnes



avaient le même problème.

J'ai deux bases, copie conforme l'une de l'autre. Quand je suis dans
la



première, je fais des requêtes insert pour mettre des données dans la
deuxième. Je fais attention aux relations alors j'insert les bonnes
tables en



premier. Mais j'ai quelques tables dont je ne suis pas capable
d'ajouter des



données à cause d'une erreur de "violation de clé"

J'ai une table "Dossiers" qui contient deux clés primaires: "Groupe"
et



"Dossier". J'ai entré les données dans cette table sans problème.
Maintenant



j'ai quelques tables rattachés à cette table là. Qui ont eux aussi
comme clé



primaire "Groupe", "Dossier", plus un NumeroAuto. Sauf que c'est
seulement le



Groupe et le Dossier qui sont reliés à la table Dossiers. Que ce soit
une



relation 1-1 ou 1-INFINI, ca ne fonctionne pas. Alors que je SAIS que
les



nouvelles données que j'essaie de rentrer ont des "Groupe" et
"Dossier" qui



sont PRESENTS dans la tables "Dossiers". (Et ce n'est pas non plus une
erreur



de doublon, car la table est vide)

Aussi quand je fais mes requêtes INSERT, j'insers aussi le NumeroAuto
car je



veux garder le même, c'est correct?

Merci d'avance













Avatar
Raymond [mvp]
Plumitif: cléPrimaire: idGroupe, idDossier, idPlumitif etant en relation
avec Dossiers sur idGroupe-idGroupe et idDossier-idDossier NE FONCTIONNE
PAS!

Quand j'enlève la relation ca marche?


n'aurais-tu pas une valeur nulle sur un champ de relation ou une clé externe
qui n'existerait pas ?

--
@+
Raymond Access MVP
http://access.seneque.free.fr/
http://access.vba.free.fr/
http://access2003.free.fr/
http://users.skynet.be/mpfa/ pour débuter sur le forum


"La Mouette" a écrit dans le message
de news:
Bonjour!

J'ai essayé d'exporter mes données dans la nouvelle base en ayant enlevé
Groupe-Dossier des clés primaire de la base cible, mais ça ne marche
toujours
pas.

J'ai trois tables dont je n'ai aucun problème à inserer:
Dossiers: cléPrimaire: idGroupe, idDossier

Debiteurs: cléPrimaire: idGroupe, idDossier, idDebiteur (Ca marche même si
idGroupe et idDossier sont des clés primaire) Sauf que cette table n'a pas
de
lien directement avec Dossiers.

Cheques: cléPrimaire: idGroupe, idDossier, idCheque (Ca marche et cette
table est en relation avec Débiteurs sous idGroupe-idGroupe,
idDossier-idDossier, ... ) Et ca marche malgré la relation.

DONC pourquoi que mes autres tables exemple

Plumitif: cléPrimaire: idGroupe, idDossier, idPlumitif etant en relation
avec Dossiers sur idGroupe-idGroupe et idDossier-idDossier NE FONCTIONNE
PAS!

Quand j'enlève la relation ca marche?

Merci de votre aide grandement appréciée!


Avatar
La Mouette

n'aurais-tu pas une valeur nulle sur un champ de relation ou une clé externe
qui n'existerait pas ?



Non! :'( Tout est beau de ce côté là!




"La Mouette" a écrit dans le message
de news:
Bonjour!

J'ai essayé d'exporter mes données dans la nouvelle base en ayant enlevé
Groupe-Dossier des clés primaire de la base cible, mais ça ne marche
toujours
pas.

J'ai trois tables dont je n'ai aucun problème à inserer:
Dossiers: cléPrimaire: idGroupe, idDossier

Debiteurs: cléPrimaire: idGroupe, idDossier, idDebiteur (Ca marche même si
idGroupe et idDossier sont des clés primaire) Sauf que cette table n'a pas
de
lien directement avec Dossiers.

Cheques: cléPrimaire: idGroupe, idDossier, idCheque (Ca marche et cette
table est en relation avec Débiteurs sous idGroupe-idGroupe,
idDossier-idDossier, ... ) Et ca marche malgré la relation.

DONC pourquoi que mes autres tables exemple

Plumitif: cléPrimaire: idGroupe, idDossier, idPlumitif etant en relation
avec Dossiers sur idGroupe-idGroupe et idDossier-idDossier NE FONCTIONNE
PAS!

Quand j'enlève la relation ca marche?

Merci de votre aide grandement appréciée!