[Issue] LibO : redémarrage index automatique sur Firebird

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.

[Issue] LibO : redémarrage index automatique sur Firebird

Messagepar camil » 11 Juin 2019 09:25

Bonjour,

J'ai un soucis avec firebird :
Quand je vide une table et qu'ensuite je lance :
ALTER TABLE T_TEST ALTER COLUMN ID_TEST RESTART WITH 0
(ou ALTER TABLE T_TEST ALTER COLUMN ID_TEST RESTART WITH 1, c'est pareil)
Je reçois le message d'erreur suivant:
1: firebird_sdbc error:
*violation of PRIMARY or UNIQUE KEY constraint "INTEG_36" on table "T_TEST"
caused by
'ALTER TABLE T_TEST ALTER COLUMN ID_TEST RESTART WITH 0'

Pour autant la numérotation auto reprend bien à partir de 1 (Pourquoi ronchone-t'il alors ?...)
Y a-t'il une instruction différente dans firebird (je n'ai rien trouvé de pertinent sur le net)
LibreOffice 6.1.6.3 X64 - Windows 10
camil
Membre lOOyal
Membre lOOyal
 
Message(s) : 33
Inscrit le : 28 Mai 2019 09:53

Re: Reset champ auto sur Libreoffice Base Firebird

Messagepar jeanmimi » 11 Juin 2019 19:29

Bonjour,
Il manque peut-être des guillemets :
Code : Tout sélectionner   AgrandirRéduire
ALTER TABLE "T_TEST" ALTER COLUMN "ID_TEST" RESTART WITH 0
LibreOffice Version : Version: 6.3.0 (x64) (10 août 2019)
Java (x64) 1.8.0_xxx, Windows 10, Thunderbird, Firefox
Avatar de l’utilisateur
jeanmimi
Grand Maître de l'OOffice
Grand Maître de l'OOffice
 
Message(s) : 14925
Inscrit le : 03 Mars 2006 17:02
Localisation : Venise verte

Re: Reset champ auto sur Libreoffice Base Firebird

Messagepar camil » 12 Juin 2019 10:55

En fait, en intégrant la commande dans une macro :
resSQL = " ALTER TABLE T_TEST ALTER COLUMN ID_TEST RESTART WITH 0 "
ça fonctionne.
Mais avec resResultat as object et excuteQuery (avec HLQSDB j'utilisais long et executeUpdate)
Je note toutefois que RESTART WITH 0 démarre la nouvelle ID à 1 - je trouve ça étrange.
Noter aussi que le champauto d'une nouvelle table démarre à 1 - chez moi en tout cas (windows 10 & Libreoffice 6.1.6.3)

Code : Tout sélectionner   AgrandirRéduire
   dim resSQL As String, resRequete As Object
'   dim resResultat as long
   dim resResultat as object
   
   resSQL = " ALTER TABLE T_TEST ALTER COLUMN ID_TEST RESTART WITH 0 "
   resRequete = maConnexion.createStatement()
'   resResultat = resRequete.executeUpdate(resSQL)
   resResultat = resRequete.executeQuery(resSQL)



Mais ça plante quand même... à la troisième fois...
Je suppose que le problème vient d'ailleurs, je ne sais (mes macros qui sont bancales ?)
Je mets la base en pièce jointe.
Quand j'ouvre le fichier puis le formulaire et que j'enchaîne saisie + efface enr. + actualise + reset ID ça fonctionne bien deux fois et ça plante à la troisième fois
En fermant le fichier et en recommençant, rebelote.

Si quelqu'un a de la lumière...
Pièces jointes
resetID.odb
(12.9 Kio) Téléchargé 23 fois
LibreOffice 6.1.6.3 X64 - Windows 10
camil
Membre lOOyal
Membre lOOyal
 
Message(s) : 33
Inscrit le : 28 Mai 2019 09:53

Re: Reset champ auto sur Libreoffice Base Firebird

Messagepar camil » 12 Juin 2019 13:01

jeanmimi a écrit:Bonjour,
Il manque peut-être des guillemets :
Code : Tout sélectionner   AgrandirRéduire
ALTER TABLE "T_TEST" ALTER COLUMN "ID_TEST" RESTART WITH 0

J'ai essayé dans ma macro. Avec un guillement simple il ne comprend pas l'instruction (Ca la tronque)
Avec des guillemets doubles :
resSQL = " ALTER TABLE ""T_TEST"" ALTER COLUMN ""ID_TEST"" RESTART WITH 0 "
il comprend bien mais j'ai le même plantage au troisième essai...
LibreOffice 6.1.6.3 X64 - Windows 10
camil
Membre lOOyal
Membre lOOyal
 
Message(s) : 33
Inscrit le : 28 Mai 2019 09:53

Re: Reset champ auto sur Libreoffice Base Firebird

Messagepar jeanmimi » 12 Juin 2019 14:00

La Macro plante dès sa première exécution.

La manœuvre que j’avais faite, décrite plus haut, était réussie par lancement du code de la Requête par "SQL direct".
LibreOffice Version : Version: 6.3.0 (x64) (10 août 2019)
Java (x64) 1.8.0_xxx, Windows 10, Thunderbird, Firefox
Avatar de l’utilisateur
jeanmimi
Grand Maître de l'OOffice
Grand Maître de l'OOffice
 
Message(s) : 14925
Inscrit le : 03 Mars 2006 17:02
Localisation : Venise verte

Re: Reset champ auto sur Libreoffice Base Firebird

Messagepar camil » 12 Juin 2019 16:42

jeanmimi a écrit:La Macro plante dès sa première exécution.

Non, je viens de vérifier. Rien d'autre ouvert, je viens de redémarrer l'ordi.
La base est enregistrée et la macro plante à la 3ème exécution. Et ça recommence après fermeture-ouverture du fichier . Je confirme absolument...

jeanmimi a écrit:La manœuvre que j’avais faite, décrite plus haut, était réussie par lancement du code de la Requête par "SQL direct".

J'ai donc ré-essayé d'entrer deux enregistrements directement dans la table (sans passer par le formulaire), puis de supprimer les deux lignes et en SQL direct :
ALTER TABLE "T_TEST" ALTER COLUMN "ID_TEST" RESTART WITH 0
Dans la case Etat il répond :
1:
Idem à la deuxième tentative, ça fonctionne. Puis pareil à la troisième tentative, j'ai en retour:
1: firebird_sdbc error:
*Dynamic SQL Error
*SQL error code = -104
*Token unknown - line 1, column 1
*1
caused by
'isc_dsql_prepare'

Je précise que je viens de faire ouverture du fichier puis trois tentatives (jusqu'au plantage) et fermeture. Tout ceci trois fois de suite avec la commande SQL directe.
Et pour être sûr de tout, j'ai refait les 9 essais avec la macro. C'est absolument régulier... :fou:
LibreOffice 6.1.6.3 X64 - Windows 10
camil
Membre lOOyal
Membre lOOyal
 
Message(s) : 33
Inscrit le : 28 Mai 2019 09:53

Re: Reset champ auto sur Libreoffice Base Firebird

Messagepar DLE » 12 Juin 2019 18:21

Bonjour,

Sur Bugzilla j'ai trouvé ceci
Il n'y a pas encore de solution.
Cdlt.
AOO 4.1.6 sous Windows 10 64 bits, FireFox, Thunderbird, ORB 1.2.1
Avatar de l’utilisateur
DLE
SuppOOrter
SuppOOrter
 
Message(s) : 1213
Inscrit le : 30 Déc 2007 19:56
Localisation : Lille

Re: Reset champ auto sur Libreoffice Base Firebird

Messagepar camil » 13 Juin 2019 07:25

DLE a écrit:Sur Bugzilla j'ai trouvé ceci
Je suis allé voir (Merci du renseignement - Je me sens moins seul d'un coup). A tout hasard j'ai essayé comme proposé dans le dernier message :
Code : Tout sélectionner   AgrandirRéduire
ALTER TABLE T_TEST ALTER ID_TEST RESTART WITH 0
Puis le même avec les guillemets. Toujours ce plantage.
Je reste donc en stand-by en laissant le sujet ouvert et en espérant des news à l'occasion.
LibreOffice 6.1.6.3 X64 - Windows 10
camil
Membre lOOyal
Membre lOOyal
 
Message(s) : 33
Inscrit le : 28 Mai 2019 09:53


Retour vers Base de données

Qui est en ligne ?

Utilisateur(s) parcourant ce forum : Aucun utilisateur inscrit et 6 invité(s)