[Résolu] Clef primaire décalé en autovaleur

Discussions sur le module de base de données Base et plus particulièrement sur le langage SQL ou sur les connexions aux SGBD tiers.
Les questions sur les macros doivent être postées dans la section dédiée en dessous.

Modérateur : Vilains modOOs

Règles du forum
Cette section est dédiée au module Base et plus particulièrement sur le langage SQL ou sur les connexions aux SGBD tiers. Vous ne devez pas poster ici de questions sur les macros mais utiliser la section éponyme.
Pour accélérer les réponses, vous pouvez mettre en ligne votre base en joignant un fichier ODB : comment faire.
coucou
Membre OOrganisé
Membre OOrganisé
Messages : 76
Inscription : 08 sept. 2009 08:20

[Résolu] Clef primaire décalé en autovaleur

Message par coucou »

Bonjour,
Il y a un an j'ai crée une base de données pour une bibliothèque associative.
Dans la table, j'ai plein de champs, mais pour résumer disons que j'ai:
-Référence roman
-Titre du livre
-Auteur

Référence roman, c'est un chiffre (type de champ [Integer]) qui me permet de retrouver les livres dans d'autres tables ou d'autres documents.
J'avais mis "auto-valeur" = Oui, pour ne pas avoir à m'embêter à rentrer les valeurs manuellement.
Et la clef primaire est sur ce "Réference Roman".

Bon.
Alors le problème est que j'ai entré 200 titres dans la base de données, et que là, je me suis rendu compte que -Zut!- il y en avait qui n'étaient plus réellement dans la bibliothèque (livres abimés, perdus, bref, mis hors circuits). Donc, croyant bien faire, je les ai supprimés de la base de données. J'aurai mieux fait de les remplacer par de nouvelles entrées, histoire que les références soit appliquées à des nouveaux livres entrant fraîchement dans la bibliothèque.
Parce que maintenant, quand je veux ajouter une nouvelle entrée, l'auto-valeur me met par exemple 280, alors qu'en réalité j'en suis à 250. Parce que j'ai supprimé une trentaine d'entrées. Donc, à chaque fois il faut que je corrige la valeur entrée dans Réference Roman (de 280 à 250 dans mon exemple). Du coup, ce n'est plus tellement une Auto-valeur puisque je me retape tout derrière manuellement....

Comment puis-je remédier à cela?

PS: - J'ai joint la base de données à ce message.
- Je ne suis pas un pro, j'ai potassé longuement de tutos pour arriver à faire cette base de données, c'était dur. Soyez indulgent et expliquez si possible les choses avec un langage pour débutant....

Merci énormément d'avance de votre aide et merci aux créateurs et modérateurs de ce forum!
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
Dernière modification par Oukcha le 09 sept. 2009 06:36, modifié 3 fois.
Raison : Ajout coche (balise présente)
LibreOffice Version: 5.1.6.2
LinuxMint 18.3
Avatar de l’utilisateur
Dude
IdOOle de la suite
IdOOle de la suite
Messages : 26201
Inscription : 03 mars 2006 07:45
Localisation : 127.0.0.1

Re: Problème avec la clef primaire

Message par Dude »

coucou a écrit :Parce que maintenant, quand je veux ajouter une nouvelle entrée, l'auto-valeur me met par exemple 280, alors qu'en réalité j'en suis à 250. Parce que j'ai supprimé une trentaine d'entrées.
Le phénomème décrit est normal. Les enregistrements ne sont pas réellement supprimés mais rayés. Il faut les libérer.

Une recherche sur le terme "autovaleur" me renvoie ce même problème : http://user.services.openoffice.org/fr/ ... autovaleur Tu y as exposé les commandes pour compresser ta base.
Poser une question, c'est bien. Répondre aux autres, c'est encore mieux.
Améliorez AOO et votez pour les issues
coucou
Membre OOrganisé
Membre OOrganisé
Messages : 76
Inscription : 08 sept. 2009 08:20

Re: Clef primaire décalé en autovaleur

Message par coucou »

J'ai donc compacté la base avec

checkpoint defrag

et

shutdown compact

La base est beaucoup moins lourde, certes, mais le problème persiste. Peut-être n'ai-je pas bien compris les instructions?
LibreOffice Version: 5.1.6.2
LinuxMint 18.3
Guylob
Membre lOOyal
Membre lOOyal
Messages : 37
Inscription : 21 juil. 2009 12:32

Re: Clef primaire décalé en autovaleur

Message par Guylob »

tiens je suis intéressé de savoir aussi, j ai exactement le même problème qui ne se résout pas avec les 2 commandes
OpenOffice2.2 sous windows xp
OpenOffice 2.4 sous vista
OpenOffice 3.1 sous vista
Avatar de l’utilisateur
jeanmimi
Grand Maître de l'OOffice
Grand Maître de l'OOffice
Messages : 17219
Inscription : 03 mars 2006 16:02
Localisation : Venise verte

Re: Clef primaire décalé en autovaleur

Message par jeanmimi »

Bonjour,
Pour redémarrer la valeur initiale du champ Ref Roman de la Table Romans
la commande SQL est du type :

Code : Tout sélectionner

ALTER TABLE "Romans" ALTER COLUMN "Ref Roman" RESTART WITH 1
à lancer par le Menu : Outils > SQL
Ensuite, il faut actualiser la Table puis enregistrer la Base. À l'ouverture, les références sont à jour.
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
LibreOffice : Version : 25.8.4 (x64)(23 février 2026)
Adoptium JRE ou Oracle JRE (x64), Windows 10, Thunderbird, Firefox
coucou
Membre OOrganisé
Membre OOrganisé
Messages : 76
Inscription : 08 sept. 2009 08:20

Re: Clef primaire décalé en autovaleur

Message par coucou »

J'ai essayé, et voici ce qui se passe:

Après avoir entré la commande SQL, j'enregistre la base (soit dit en passant, je suis obligé de faire "enregistrer sous", puisque "enregistrer" est grisé, de même que l'icône disquette, comme si le fichier n'avait pas subi de changement...bizarre?), et je la ré-ouvre.
Ensuite je décide de mettre une nouvelle entrée dans la base pour voir si ça marche. Puis, lorsque je veux enregistrer l'entrée , j'ai le message d'erreur suivant:
shot1.JPG


Et si je clique sur OK, j'ai le second message suivant:
shot2.JPG

Euh...

Je crois que c'est pas gagné mon histoire....
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
LibreOffice Version: 5.1.6.2
LinuxMint 18.3
Avatar de l’utilisateur
jeanmimi
Grand Maître de l'OOffice
Grand Maître de l'OOffice
Messages : 17219
Inscription : 03 mars 2006 16:02
Localisation : Venise verte

Re: Clef primaire décalé en autovaleur

Message par jeanmimi »

Apparemment, le format numérique du champ Ref Roman est du type Standard avec 2 chiffres après la virgule.
En le modifiant, il semble que ça fonctionne.
À toi de tester.
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
LibreOffice : Version : 25.8.4 (x64)(23 février 2026)
Adoptium JRE ou Oracle JRE (x64), Windows 10, Thunderbird, Firefox
Jamelot
Membre lOOyal
Membre lOOyal
Messages : 28
Inscription : 09 juin 2009 14:09
Localisation : Quimper, Bretagne

Re: Clef primaire décalé en autovaleur

Message par Jamelot »

Bonjour,
En fait, la solution donnée par Jeanmimi est la bonne. Cependant, il faut l'adapter à ta base.
La commande SQL suivante :

Code : Tout sélectionner

ALTER TABLE "Romans" ALTER COLUMN "Ref Roman" RESTART WITH 1
permet de repositionner l'index de l'autovaleur. Comme ta table "Romans" s'arrête actuellement à l'index 345, tu dois effectuer la commande suivante :

Code : Tout sélectionner

ALTER TABLE "Romans" ALTER COLUMN "Ref Roman" RESTART WITH 346
pour qu'elle puisse redémarrer où tu t'es arrêté.
Voilà!
OpenOffice 3.1.1 sous Windows XP
coucou
Membre OOrganisé
Membre OOrganisé
Messages : 76
Inscription : 08 sept. 2009 08:20

Re: Clef primaire décalé en autovaleur

Message par coucou »

Super! Ca marche!
C'est vrai que je ne connais rien en SQL, alors....

Mais maintenant j'ai une dernière question:

Je voulais savoir si c'était possible de "décaler" ce qui a été entré dans "Référence Roman".
Je m'explique: Actuellement, la première entrée a la valeur "0" dans le champ "Référence Roman". Du coup, si je vais à l'entrée 45, j'ai la "Référence Roman" n°44, et ainsi de suite. Ce n'est pas bien grave, mais ça aurait été pratique que les valeurs entrée dans "Référence Roman" correspondent aux numéro des entrées. 5je ne sais pas si vous me suivez....)
LibreOffice Version: 5.1.6.2
LinuxMint 18.3
Jamelot
Membre lOOyal
Membre lOOyal
Messages : 28
Inscription : 09 juin 2009 14:09
Localisation : Quimper, Bretagne

Re: Clef primaire décalé en autovaleur

Message par Jamelot »

Alors, tout d'abord, fais une copie de ta base ... au cas où!!!
Ensuite, sélectionnes la table "Romans", cliques droit -> copier.
Ouvre un document "calc" et fait "coller". C'est un peu long, il y a quelques données....
Puis ouvre ta table "Romans". Sélectionne tous les enregistrements et supprime les. Ferme la table.
Effectue la requète SQL suivante :

Code : Tout sélectionner

ALTER TABLE "Romans" ALTER COLUMN "Ref Roman" RESTART WITH 1
Depuis ton fichier calc, sélectionne tous (y compris la première ligne), "copier".
Clique droit sur ta table "Romans" -> coller.
Sélectionne "Ajouter des données", puis "suivant".
Ensuite, décoche la case "Ref Roman" puis "créer".
C'est fini.
OpenOffice 3.1.1 sous Windows XP
coucou
Membre OOrganisé
Membre OOrganisé
Messages : 76
Inscription : 08 sept. 2009 08:20

Re: Clef primaire décalé en autovaleur

Message par coucou »

Euh...c'est quoi un document "Calc"?
LibreOffice Version: 5.1.6.2
LinuxMint 18.3
Jamelot
Membre lOOyal
Membre lOOyal
Messages : 28
Inscription : 09 juin 2009 14:09
Localisation : Quimper, Bretagne

Re: Clef primaire décalé en autovaleur

Message par Jamelot »

OpenOffice Calc = un classeur, une feuille de tableur
OpenOffice 3.1.1 sous Windows XP
coucou
Membre OOrganisé
Membre OOrganisé
Messages : 76
Inscription : 08 sept. 2009 08:20

Re: Clef primaire décalé en autovaleur

Message par coucou »

Euh...une fois que j'ai tout copier dans un document Calc, je ne sais pas comment séléctionner tous les enregistrements de la table "Romans" afin de les supprimer. (vraiment, je suis un débutant...)
LibreOffice Version: 5.1.6.2
LinuxMint 18.3
Jamelot
Membre lOOyal
Membre lOOyal
Messages : 28
Inscription : 09 juin 2009 14:09
Localisation : Quimper, Bretagne

Re: Clef primaire décalé en autovaleur

Message par Jamelot »

Alors,
Lorsque ta table est ouverte, tu vas sur le dernier enregistrement. Tu cliques sur la case de gauche pour sélectionner toute la ligne. Puis, avec l'ascenseur (à droite), tu remontes jusqu'au premier enregistrement. Là, tu appuies sur la touche 'shift' (ou 'Maj.') et tu cliques sur la case à gauche du premier enregistrement. Tout doit passer en fond bleu. A ce moment, tu peux faire : Edition -> Supprimer l'enregistrement (ou tout simplement la touche 'Suppr.'). Comme dit le slogan, "Tout doit disparaître"!!!
OpenOffice 3.1.1 sous Windows XP
coucou
Membre OOrganisé
Membre OOrganisé
Messages : 76
Inscription : 08 sept. 2009 08:20

Re: Clef primaire décalé en autovaleur

Message par coucou »

Super!
C'est royal!
J'ai une base toute proprette, maintenant!
LibreOffice Version: 5.1.6.2
LinuxMint 18.3