[Résolu] Statut SQL: 37000 Code d'erreur: -11

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.
Hugo osteo
Membre lOOyal
Membre lOOyal
Messages : 45
Inscription : 16 juil. 2022 19:16

[Résolu] Statut SQL: 37000 Code d'erreur: -11

Message par Hugo osteo »

Bonjour,

Dans le formulaire NV_SEANCE, formulaire secondaire (tabulaire), champ zone de liste: REF_MORCEAU, onglet Données des propriétés, ma commande SQL fonctionne lorsque je désactive le mode "Ébauche". Mais lorsque je ferme le formulaire et l'ouvre à nouveau, j'ai ce message:
Statut SQL: 37000
Code d'erreur: -11

Unexpected token: in statement [SELECT "T_MORCEAU"."ARTISTE" || ' - ' || "T_MORCEAU"."TITRE" || ' ' || ]


Je ne comprends pas pourquoi.

Code : Tout sélectionner

SELECT "T_MORCEAU"."ARTISTE" || ' - ' || "T_MORCEAU"."TITRE" || ' ' || 
       (SELECT "CATEGORIE" FROM "T_CATEGORIE" WHERE "ID_CATEGORIE" = "T_MORCEAU"."REF_CATEGORIE") || ' ' || 
       EXTRACT(MINUTE FROM "T_MORCEAU"."DUREE") || 'm' || 
       EXTRACT(SECOND FROM "T_MORCEAU"."DUREE") || 's', 
       "T_MORCEAU"."ID_MORCEAU"
FROM "T_MORCEAU"
ORDER BY "T_MORCEAU"."ARTISTE";
Merci!
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
Dernière modification par Hugo osteo le 18 oct. 2023 15:11, modifié 1 fois.
LibreOffice 7.6.2.1 (X86_64)
OpenOffice 4.1.12
Windows 10 pro version 21H2 19044.1766
Avatar de l’utilisateur
Jurassic Pork
PassiOOnné
PassiOOnné
Messages : 629
Inscription : 09 août 2017 22:15

Re: Statut SQL: 37000 Code d'erreur: -11

Message par Jurassic Pork »

Hello,
je ne sais pas exactement pourquoi mais ta requête SQL semble parfois tronquée quand il y a un CRLF. J'ai remplacé les CRLF par des LF et moi je n'ai plus de Syntax error (quand la requête est tronquée) :

Code : Tout sélectionner

SELECT "T_MORCEAU"."ARTISTE" || ' - ' || "T_MORCEAU"."TITRE" || ' ' || 
       (SELECT "CATEGORIE" FROM "T_CATEGORIE" WHERE "ID_CATEGORIE" = "T_MORCEAU"."REF_CATEGORIE") || ' ' || 
       EXTRACT(MINUTE FROM "T_MORCEAU"."DUREE") || 'm' || 
       EXTRACT(SECOND FROM "T_MORCEAU"."DUREE") || 's', 
       "T_MORCEAU"."ID_MORCEAU"
 FROM "T_MORCEAU"
 ORDER BY "T_MORCEAU"."ARTISTE";
:oops: Désolé j'ai enlevé le problème du "plusieurs fois le même résultat" dans mon message qui était dû à une erreur dans ma requête (c'est corrigé)
finalement le mode opératoire qui semble fonctionner chez moi. Editer la requête en mode texte (désactiver le mode Ebauche). Copier dedans la requête ci-dessus. Editer Alors la requête en mode table (Activer le mode Ebauche) et enregistrer.

Ami calmant, JP
LibreOffice 7.6.2.1 et OpenOffice 4.1.15 sous windows 11
LibreOffice 24.2.0 et OpenOffice 4.1.15 sous Ubuntu 20.04
Avatar de l’utilisateur
jeanmimi
Grand Maître de l'OOffice
Grand Maître de l'OOffice
Messages : 16960
Inscription : 03 mars 2006 16:02
Localisation : Venise verte

Re: Statut SQL: 37000 Code d'erreur: -11

Message par jeanmimi »

Bonjour,
La requête devrait plutôt être :

Code : Tout sélectionner

SELECT "T_MORCEAU"."ARTISTE", "T_MORCEAU"."TITRE", "T_CATEGORIE"."CATEGORIE", 
EXTRACT( MINUTE FROM "DUREE" ) AS "m", 
EXTRACT( SECOND FROM "DUREE" ) AS "s", "T_PLAYLIST"."REF_SEANCE" FROM "T_MORCEAU", "T_CATEGORIE", "T_PLAYLIST" 
WHERE "T_MORCEAU"."REF_CATEGORIE" = "T_CATEGORIE"."ID_CATEGORIE" AND "T_PLAYLIST"."REF_MORCEAU" = "T_MORCEAU"."ID_MORCEAU"
puis, si tu veux concaténer les champs de cette requête :

Code : Tout sélectionner

SELECT "ARTISTE" || ' - ' || "TITRE" || ' - ' || "CATEGORIE" || ' - ' || "m" || ' m ' || "s" || ' s ' AS "MORCEAU" FROM "Req_test"
LibreOffice : Version : 24.2 (x64)(12 avril 2024)
Adoptium JRE ou Oracle JRE (x64), Windows 10, Thunderbird, Firefox
Hugo osteo
Membre lOOyal
Membre lOOyal
Messages : 45
Inscription : 16 juil. 2022 19:16

Re: Statut SQL: 37000 Code d'erreur: -11

Message par Hugo osteo »

Je ne saisis pas dans ni l'un ni l'autre de vos messages, qu'est-ce que je dois faire. Ou sinon, où je dois copier ces formules. Merci d'être plus précis puisque je suis vraiment novice dans ce domaine.

Merci!
LibreOffice 7.6.2.1 (X86_64)
OpenOffice 4.1.12
Windows 10 pro version 21H2 19044.1766
Avatar de l’utilisateur
jeanmimi
Grand Maître de l'OOffice
Grand Maître de l'OOffice
Messages : 16960
Inscription : 03 mars 2006 16:02
Localisation : Venise verte

Re: Statut SQL: 37000 Code d'erreur: -11

Message par jeanmimi »

Dans mon précédent message, j’ai d’abord créé une première requête que j’ai appelée Req_test.
Et comme je n’arrivais pas à concaténer les instructions EXTRACT j’en ai créé une deuxième en concaténant les alias de la première requête.
LibreOffice : Version : 24.2 (x64)(12 avril 2024)
Adoptium JRE ou Oracle JRE (x64), Windows 10, Thunderbird, Firefox
Hugo osteo
Membre lOOyal
Membre lOOyal
Messages : 45
Inscription : 16 juil. 2022 19:16

Re: Statut SQL: 37000 Code d'erreur: -11

Message par Hugo osteo »

C'est ce que j'ai fait, en créant la Requête_MORCEAU avec la 2e commande. Qu'est que je dois faire ensuite pour que le champs de cette requête se retrouve dans mes choix du formulaire NV_SEANCE, formulaire secondaire (tabulaire), champ zone de liste: REF_MORCEAU, onglet Données des propriétés?
(Ci-joint, le fichier avec les nouvelles requêtes).
Merci!
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
LibreOffice 7.6.2.1 (X86_64)
OpenOffice 4.1.12
Windows 10 pro version 21H2 19044.1766
Avatar de l’utilisateur
Jurassic Pork
PassiOOnné
PassiOOnné
Messages : 629
Inscription : 09 août 2017 22:15

Re: Statut SQL: 37000 Code d'erreur: -11

Message par Jurassic Pork »

Hello,
Le souci dans la première requête de jeanmimi c'est qu'il y a des résultats en double, il faut faire un SELECT DISTINCT .
Ensuite c'est pas bien compliqué. Dans l'onglet Données de la zone de liste au lieu d'avoir du SQL dans le type de contenu de liste il faut mettre Requête. Ensuite on indique la requête et dans le champ lié 0 :
ReqZoneDeListe.png
[EDIT] il y a un truc que je ne comprends pas bien dans ton formulaire , ta colonne REF_MORCEAU t'affiche en fait une combinaison de champs. A Quel champ est-elle relié ?
Ami calmant, J.P
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
Dernière modification par Jurassic Pork le 16 oct. 2023 13:13, modifié 1 fois.
LibreOffice 7.6.2.1 et OpenOffice 4.1.15 sous windows 11
LibreOffice 24.2.0 et OpenOffice 4.1.15 sous Ubuntu 20.04
Avatar de l’utilisateur
jeanmimi
Grand Maître de l'OOffice
Grand Maître de l'OOffice
Messages : 16960
Inscription : 03 mars 2006 16:02
Localisation : Venise verte

Re: Statut SQL: 37000 Code d'erreur: -11

Message par jeanmimi »

Ensuivant les conseils de Jurassic Pork, la requête devient :

Code : Tout sélectionner

SELECT DISTINCT "ARTISTE" || ' - ' || "TITRE" || ' - ' || "CATEGORIE" || ' - ' || 
CONCAT( ( EXTRACT( MINUTE FROM "DUREE" ) || ' ' || 'mn ' ), ( EXTRACT( SECOND FROM "DUREE" ) || ' ' || 's' ) ) AS "MORCEAU" 
FROM "T_MORCEAU", "T_CATEGORIE", "T_PLAYLIST" 
WHERE "T_MORCEAU"."REF_CATEGORIE" = "T_CATEGORIE"."ID_CATEGORIE" AND "T_PLAYLIST"."REF_MORCEAU" = "T_MORCEAU"."ID_MORCEAU"
LibreOffice : Version : 24.2 (x64)(12 avril 2024)
Adoptium JRE ou Oracle JRE (x64), Windows 10, Thunderbird, Firefox
Hugo osteo
Membre lOOyal
Membre lOOyal
Messages : 45
Inscription : 16 juil. 2022 19:16

Re: Statut SQL: 37000 Code d'erreur: -11

Message par Hugo osteo »

Bonjour,

Ça semble fonctionner pour l'affichage concaténé des champs de T_MORCEAU. Sauf que maintenant j'ai cette erreur lorsque qu'il s'agit d'enregistrer T_MORCEAU.ID_MORCEAU dans le champs T_PLAYLIST.REF_MORCEAU.
Statut SQL: 23000
Code d'erreur: -177

Integrity constraint violation - no parent SYS_FK_125 table: T_PLAYLIST in statement [UPDATE "T_PLAYLIST" SET "REF_MORCEAU" = ? WHERE "ID_PLAYLIST" = ?]

(Corrigez-moi si j'ai mal compris).

Comment je peux faire pour arranger ça?

Merci encore.
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
LibreOffice 7.6.2.1 (X86_64)
OpenOffice 4.1.12
Windows 10 pro version 21H2 19044.1766
Hugo osteo
Membre lOOyal
Membre lOOyal
Messages : 45
Inscription : 16 juil. 2022 19:16

Re: Statut SQL: 37000 Code d'erreur: -11

Message par Hugo osteo »

Bonjour,
[EDIT] il y a un truc que je ne comprends pas bien dans ton formulaire , ta colonne REF_MORCEAU t'affiche en fait une combinaison de champs. A Quel champ est-elle relié ?
Dans le champ T_PLAYLIST.REF_MORCEAU du formulaire NV_SEANCE, je veux pouvoir choisir dans la liste en fonction du morceau, de la catégorie ou de la durée du morceau. C'est pour cela qu'ils sont concaténés. Mais dans T_PLAYLIST, je veux que le champs REF_MORCEAU inscrive T_MORCEAU.ID_MORCEAU correspondant à la ligne choisie.

J'espère que c'est clair :?
LibreOffice 7.6.2.1 (X86_64)
OpenOffice 4.1.12
Windows 10 pro version 21H2 19044.1766
Avatar de l’utilisateur
Jurassic Pork
PassiOOnné
PassiOOnné
Messages : 629
Inscription : 09 août 2017 22:15

Re: Statut SQL: 37000 Code d'erreur: -11

Message par Jurassic Pork »

Hello,
dans ta requête Req_Test, il suffit de rajouter le champ "T_MORCEAU"."ID_MORCEAU" en résultat :

Code : Tout sélectionner

SELECT DISTINCT "ARTISTE" || ' - ' || "TITRE" || ' - ' || "CATEGORIE" || ' - ' || 
CONCAT( ( EXTRACT( MINUTE FROM "DUREE" ) || ' ' || 'mn ' ), 
( EXTRACT( SECOND FROM "DUREE" ) || ' ' || 's' ) ) 
AS "MORCEAU", "T_MORCEAU"."ID_MORCEAU" 
FROM "T_MORCEAU", "T_CATEGORIE", "T_PLAYLIST" 
WHERE "T_MORCEAU"."REF_CATEGORIE" = "T_CATEGORIE"."ID_CATEGORIE" AND 
"T_PLAYLIST"."REF_MORCEAU" = "T_MORCEAU"."ID_MORCEAU"
et dans les propriétés de la zone de liste REF_MORCEAU de ton formulaire NV_SEANCE dans l'onglet Données dire que le champ lié est le champ 1 (ce qui correspond à T_MORCEAU.ID_MORCEAU
ReqZoneDeListe.png

Ami calmant, J.P
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
LibreOffice 7.6.2.1 et OpenOffice 4.1.15 sous windows 11
LibreOffice 24.2.0 et OpenOffice 4.1.15 sous Ubuntu 20.04
Hugo osteo
Membre lOOyal
Membre lOOyal
Messages : 45
Inscription : 16 juil. 2022 19:16

Re: Statut SQL: 37000 Code d'erreur: -11

Message par Hugo osteo »

Tout ça fonctionne à merveille!

Merci infiniment :D
LibreOffice 7.6.2.1 (X86_64)
OpenOffice 4.1.12
Windows 10 pro version 21H2 19044.1766