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
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 :
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 secondeStatut SQL: HY000
Code d'erreur: 1000
syntax error, unexpected $end, expecting BETWEEN or IN or SQL_TOKEN_LIKE
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.