[Résolu][Calc] Requête PostGreSQL qui renvoie une erreur

Discussions et questions sur tout ce qui concerne la programmation tous langages et tous modules confondus.

Modérateur : Vilains modOOs

Règles du forum
:alerte: Balisage obligatoire dans cette section !
Aidez-nous à vous aider au mieux en balisant correctement votre question : reportez-vous sur les règles de cette section avant de poster !
Raooul
Fraîchement OOthentifié
Messages : 9
Inscription : 15 févr. 2019 14:35

[Résolu][Calc] Requête PostGreSQL qui renvoie une erreur

Message par Raooul »

Bonjour,

Pour préfacer rapidement je vais présenter le contexte dans lequel survient mon problème.
(comme d'autres)Je travail sur un sujet sensible et donc j'ai signé une clause de confidentialité, dès lors je ne suis pas dans la capacité de vous partager la requête SQL en question.
En revanche je vais tâcher de contourner ce problème pour avancer.
Mes compétences dans ce domaines son quasi nulles, d'ailleurs j'apprends beaucoup des messages et réponses apportés sur ce forum.

L'objectif de ma macro :
Faire un SELECT de données SQL
Importer les données dans un feuillet spécifique

Voici ce a quoi ressemble la macro

Code : Tout sélectionner

sub ImportDTNS
dim NomDataBaseRange as string
dim AdresseDestination as string
dim Requete as string

'** Paramètre obligatoire **************************************************
NomSource="test"
'***************************************************************************
LaFeuille=Thiscomponent.Sheets.getByName("S")
Requete="SELECT nanani FROM ges.fichier_truc fc LEFT JOIN ctrl.tst_machin ctrld ON fc.id_fichier_truc = ctrld.id_declaration WHERE amdd.nature_demande LIKE '20' AND ctrli.type_sexe LIKE 'NS' OR amdd.nature_demande LIKE '30' ORDER BY fc.nom_fichier ;"

if NomDataBaseRange="" then NomDataBaseRange=LaFeuille.name & "Import"

'LesDataRanges=thisComponent.DataBaseRanges
'oDataRange=LesDataRanges.getbyname(NomDataBaseRange)
oDBContext = CreateUnoService("com.sun.star.sdb.DatabaseContext")
RetourBase=oDBContext.hasByName(NomSource)
LeCellRange=LaFeuille.getCellRangeByName("A1")

dim ParamSource(3) as new com.sun.star.beans.PropertyValue
paramSource(0).name="DatabaseName"
paramSource(0).value=NomSource
paramSource(1).name="SourceType"
paramSource(1).value=com.sun.star.sheet.DataImportMode.SQL
paramSource(2).name="SourceObject"
paramSource(2).value=Requete
'paramSource(3).name="Name"
'paramSource(3).value="toto"
LeCellRange.doImport(paramSource())

end sub
Note : J'ai volontairement modifié la requête SQL pour ne pas violer ma close de confidentialité
J'ai pompé la macro et elle fonctionne du tonnerre.

Je dois reproduire cette macro 2 fois, pour 2 requêtes SQL différentes.
Chaque requête fonctionne sous PgAdmin, le problème ne viendrait donc pas de la syntaxe de la requête.

Pour les deux dernières requêtes, j'ai ce message :
Statut SQL: HY000
Code d'erreur: 1000

syntax error, unexpected $end, expecting BETWEEN or IN or SQL_TOKEN_LIKE
La différence entre la première et la seconde se retrouve dans la taille 31 "lignes" pour la première et 87 "lignes" pour la seconde

Plus spécifiquement :
La première contient 7 jointures (avec 2 AND)
La seconde contient 11 jointures (avec 45 AND)

Note : Je n'ai aucune compétences en SQL, dès lors je fais confiance au responsable en la matière pour ce domaine. Ces requêtes sont utilisées tous les jours et ne posent aucun problèmes sur PgAdmin.

Je suis conscient que le manque d'information freine drastiquement votre diagnostique. Mais avec un peu de chance l'un d'entre vous aura déjà rencontré ce cas.

Note : J'ai tenté de réduire la longueur de la requête avec des "& _", sans succès.
Note : J'espère que le titre est suffisamment évocateur, au besoin je pourrais le modifier.

Je vous remercie par avance pour votre aide.

Note : Je ne pourrais malheureusement répondre avant lundi prochain.
Dernière modification par micmac le 26 févr. 2019 15:05, modifié 3 fois.
Raison : Ajout de la coche verte
LibO 5.4.4.2 (x64) sous Windows 10
Avatar de l’utilisateur
micmac
RespOOnsable forum
RespOOnsable forum
Messages : 9255
Inscription : 28 août 2010 08:45

Re: [Calc]Requête SQL dans macro qui renvoit une erreur

Message par micmac »

Bonjour et bienvenue sur le forum,
Dans votre signature il y a écrit : LibreOffice Version: 5.4.4.2 (x64) sous Windows 10
Votre signature fait mention d'une version de LibreOffice qui n'est plus maintenue.
Est-ce une erreur, un oubli, un choix, une obligation ?
Dans ce dernier cas, mentionnez-le dans votre signature par Obligation de version.

Pour connaître la version que vous possédez : https://forum.openoffice.org/fr/forum/v ... 582#p11582

Afin de profiter des dernières améliorations, il est fortement recommandé d'être à jour de la dernière version stable 6.1.5

Dans votre signature il est nécessaire d'indiquer :
1- La version exacte de AOO ou LibO (AOO 4.1.6, LibO 6.1.5 par exemple) ;
2- La version exacte du système d'exploitation (Windows XP SP3, Vista SP2, Windows 7 SP1, Win 8.1, Win 10, Ubuntu 18.10, MacOS 10.14.2 par exemple).
Accès direct à votre signature pour la corriger.

Cordialement.
Touche Ctrl de Windows = touche cmd⌘ sur Mac
Outils > Options sur Windows = OpenOffice > Préférences sur Mac
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: [Calc]Requête SQL dans macro qui renvoit une erreur

Message par jeanmimi »

Bonjour,
Raooul a écrit :Chaque requête fonctionne sous PgAdmin, le problème ne viendrait donc pas de la syntaxe de la requête.
Dans les exemples du forum, les champs des tables sont encadrés par des quotes, comme tu peux le voir ici :
https://forum.openoffice.org/fr/forum/v ... ro#p323467
LibreOffice : Version : 24.2 (x64)(12 avril 2024)
Adoptium JRE ou Oracle JRE (x64), Windows 10, Thunderbird, Firefox
Avatar de l’utilisateur
Dude
IdOOle de la suite
IdOOle de la suite
Messages : 25181
Inscription : 03 mars 2006 07:45
Localisation : 127.0.0.1

Re: [Calc]Requête SQL dans macro qui renvoit une erreur

Message par Dude »

Raooul a écrit :Chaque requête fonctionne sous PgAdmin
Cette phrase signifie que tu utilises le SGBD PostGreSQL.
Au lieu de passer par Calc, connecte ta source directement sous Base.
Et regarde si tes requêtes passent dans l'éditeur SQL en utilisant le mode direct.




Et ton titre est à corriger pour refléter le problème : [Calc] Requête PostGreSQL renvoie une erreur
Raooul
Fraîchement OOthentifié
Messages : 9
Inscription : 15 févr. 2019 14:35

Re: [Calc]Requête SQL dans macro qui renvoit une erreur

Message par Raooul »

Bonjour,
Dans les exemples du forum, les champs des tables sont encadrés par des quotes, comme tu peux le voir ici :
viewtopic.php?f=8&t=59841&p=323467&hilit=code+SQL+dans+Macro#p323467
Je vais définitivement regarder ces exemples en espérant y trouver des pistes, merci.
Cette phrase signifie que tu utilises le SGBD PostGreSQL.
Au lieu de passer par Calc, connecte ta source directement sous Base.
Et regarde si tes requêtes passent dans l'éditeur SQL en utilisant le mode direct.
Mince, j'ai manqué de précision dans l'explication du contexte.
Dans mes missions courantes, j'utilise en effet PostGreSQL et ces requêtes.

En revanche, aujourd'hui j'essaye péniblement de faire toutes ces tâches sous macro libreoffice.

Pour l'heure j'ai la macro que vous avez dans mon post initial, qui se connecte via base à la base de donnée.

Quand je lance "l'énorme requête" sous PgAdmin, ça fonctionne, sous base ça me donne le message d'erreur.

Je n'ai pas encore trouvé de solution mais je cherche fort !

Merci pour votre soutient.
LibO 5.4.4.2 (x64) sous Windows 10
Avatar de l’utilisateur
Dude
IdOOle de la suite
IdOOle de la suite
Messages : 25181
Inscription : 03 mars 2006 07:45
Localisation : 127.0.0.1

Re: [Calc]Requête SQL dans macro qui renvoit une erreur

Message par Dude »

Raooul a écrit :Mince, j'ai manqué de précision dans l'explication du contexte.
Manque de précision et tu ne fais pas ce que je te demande également :evil:
Dude a écrit :Et ton titre est à corriger pour refléter le problème : [Calc] Requête PostGreSQL renvoie une erreur
Raooul a écrit :sous base ça me donne le message d'erreur
Ne penses-tu pas qu'il serait bien de fournir une copie écran ?
Et de préciser quel pilote est utilisé pour la connexion.
Raooul
Fraîchement OOthentifié
Messages : 9
Inscription : 15 févr. 2019 14:35

Re: [Calc]Requête SQL dans macro qui renvoie une erreur

Message par Raooul »

J'ai justement fait ce que tu m'as demandé.
Tu as raison, les copies d'écran vont nous aider.

Pour le pilote je ne vois pas de quoi tu parles (je suis vraiment novice la dedans, sorry).

Actuellement, la macro libre office, interroge Base.
Et quand je lance la requête en Direct : Confère pièce jointe Requete direct


Message d'erreur : Confère pièce jointe Message d'erreurBASE


Le titre me parait bon.

Note : PostGre = OK; Calc/Base = KO

Note 2 : La macro fonctionne parfaitement pour la "première" requête similaire (qui est beaucoup moins longue).
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
LibO 5.4.4.2 (x64) sous Windows 10
Avatar de l’utilisateur
Bidouille
RespOOnsable forum
RespOOnsable forum
Messages : 12230
Inscription : 08 nov. 2005 16:23
Localisation : Caen, France

Re: [Calc]Requête SQL dans macro qui renvoie une erreur

Message par Bidouille »

Raooul a écrit :Le titre me parait bon.
Non, le titre comporte un terme implicite : toutes les questions de cette section traitent de macro.
Corrigé à votre place pour cette fois.
Raooul
Fraîchement OOthentifié
Messages : 9
Inscription : 15 févr. 2019 14:35

Re: [Calc]Requête SQL dans macro qui renvoie une erreur

Message par Raooul »

Bidouille a écrit :
Raooul a écrit :Le titre me parait bon.
Non, le titre comporte un terme implicite : toutes les questions de cette section traitent de macro.
Corrigé à votre place pour cette fois.
D'accord, mais c'est pas la requête sous PostGre qui renvoie une erreur, mais la requête sous BASE.

Remarque, y'a sans doute quelque chose que je ne saisi pas.
LibO 5.4.4.2 (x64) sous Windows 10
Avatar de l’utilisateur
Dude
IdOOle de la suite
IdOOle de la suite
Messages : 25181
Inscription : 03 mars 2006 07:45
Localisation : 127.0.0.1

Re: [Calc]Requête SQL dans macro qui renvoie une erreur

Message par Dude »

Evite de citer systématiquement l'intégralité des messages auxquelles tu réponds.
Cela alourdit inutilement la lecture.
Raooul a écrit :c'est pas la requête sous PostGre qui renvoie une erreur, mais la requête sous BASE.
Non, car Base ne sert que de connecteur à PostGreSQL.
Voir le fil "Avec quel moteur je tourne ?"
Et d'où ma question :
Dude a écrit :Et de préciser quel pilote est utilisé pour la connexion.
Raooul
Fraîchement OOthentifié
Messages : 9
Inscription : 15 févr. 2019 14:35

Re: [Calc] Requête PostGreSQL qui renvoie une erreur

Message par Raooul »

Parfait.

Donc je tourne sur PostgreSQL.
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
LibO 5.4.4.2 (x64) sous Windows 10
Avatar de l’utilisateur
Dude
IdOOle de la suite
IdOOle de la suite
Messages : 25181
Inscription : 03 mars 2006 07:45
Localisation : 127.0.0.1

Re: [Calc] Requête PostGreSQL qui renvoie une erreur

Message par Dude »

As-tu essayé ta requête via le menu Outils > SQL... ?
Raooul
Fraîchement OOthentifié
Messages : 9
Inscription : 15 févr. 2019 14:35

Re: [Calc] Requête PostGreSQL qui renvoie une erreur

Message par Raooul »

Je viens de tenter, après avoir cliqué sur "Exécuter" :
- La requêtes passe dans l'encadré "Etat", juste au dessous
- Mais aucun résultat n'apparrait
LibO 5.4.4.2 (x64) sous Windows 10
Avatar de l’utilisateur
Dude
IdOOle de la suite
IdOOle de la suite
Messages : 25181
Inscription : 03 mars 2006 07:45
Localisation : 127.0.0.1

Re: [Calc] Requête PostGreSQL qui renvoie une erreur

Message par Dude »

A priori ce problème n'est pas récent : https://forum.openoffice.org/fr/forum/s ... resql.html
Les développeurs de LibO ont semble t-il intégré un pilote insuffisamment testé.
Je n'utilise pas LibO donc, je passe la main. Sans doute faudrait-il créer un rapport de bogue.

A noter que la prochaine 4.2.0 d'OpenOffice aura cette connexion native à PostGreSQL également.
Raooul
Fraîchement OOthentifié
Messages : 9
Inscription : 15 févr. 2019 14:35

Re: [Calc] Requête PostGreSQL qui renvoie une erreur

Message par Raooul »

Ah zut, je craignais un problème de ce goût.

Merci beaucoup pour ton aide. Je poursuis mes recherches :)
LibO 5.4.4.2 (x64) sous Windows 10
Avatar de l’utilisateur
Dude
IdOOle de la suite
IdOOle de la suite
Messages : 25181
Inscription : 03 mars 2006 07:45
Localisation : 127.0.0.1

Re: [Calc] Requête PostGreSQL qui renvoie une erreur

Message par Dude »

Il serait bien de fournir un script SQL comprenant la structure des tables et un jeu de données.
Ceci afin que d'autres puissent reproduire le problème.
Raooul
Fraîchement OOthentifié
Messages : 9
Inscription : 15 févr. 2019 14:35

Re: [Calc] Requête PostGreSQL qui renvoie une erreur

Message par Raooul »

Bonjour,

J'ai longuement cherché une solution à ce problème (en passant notamment sur VBA). Et j'en suis venu à la conclusion que LibreOffice était plus stricte que PostGreSQL.

J'ai confié cette requête SQL qui fonctionnait sur PGAdmin à celui qui l'avait conçu, visiblement quelque chose d'inutile était encore présent.

Après l'avoir retiré, je ne rencontre plus aucun problème dans mon code.

Je clos le sujet, et je vous remercie à nouveau pour votre aide.
LibO 5.4.4.2 (x64) sous Windows 10
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: [Calc] Requête PostGreSQL qui renvoie une erreur

Message par jeanmimi »

Comme la correction peut intéresser d'autres personnes, peux-tu être plus explicite sur ce "quelque chose d'inutile" ?
LibreOffice : Version : 24.2 (x64)(12 avril 2024)
Adoptium JRE ou Oracle JRE (x64), Windows 10, Thunderbird, Firefox
Raooul
Fraîchement OOthentifié
Messages : 9
Inscription : 15 févr. 2019 14:35

Re: [Résolu][Calc] Requête PostGreSQL qui renvoie une erreur

Message par Raooul »

Oui bien sur.

Une jointure vers une table obsolète. La requête SQL aurait évolué durant les derniers mois. La jointure est restée, et ne posait aucun problème jusqu'aujourd'hui.
LibO 5.4.4.2 (x64) sous Windows 10