1. #1
    Candidat au Club
    Homme Profil pro
    Responsable d'un système d'information métier
    Inscrit en
    mars 2018
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Responsable d'un système d'information métier

    Informations forums :
    Inscription : mars 2018
    Messages : 1
    Points : 2
    Points
    2

    Par défaut [IBM][Pilote ODBC System i Access][DB2 for i5/OS]SQL0104 - élément syntaxique ! n'est pas correct.

    Bonjour,

    Pour commencer, j'espère être dans le bon forum.

    Ensuite, j'utilise habituellement un driver odbc pour importer des données dans des fichiers Excel depuis notre AS et cette fois j'ai l'anomalie suivante qui m'est retournée au moment ou j'essaie d'insérer la source de données dans ma feuille.

    [IBM][Pilote ODBC System i Access][DB2 for i5/OS]SQL0104 - élément syntaxique ! n'est pas correct.

    sachant que ma requête ne comporte à priori aucune erreur puisqu'elle s’exécute parfaitement dans strsql. La voici :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    select STK.depot, STK.noart, 
    CASE
    WHEN STK.STODJ2 > '00' AND DAYS(NOW())-DAYS(STK.STODS2!!STK.STODA2!!'-'!!STK.STODM2!!'-'!!STK.STODJ2) > 365 THEN 'D'
    WHEN STK.STNK18>0 AND STK.QTINV/STK.STNK18 > 180 THEN 'S'
    ELSE 'D(0vte)'
    END              
    from astockp1 STK
    join aarticp1 ART on ART.NOART=STK.NOART
    join astofip1 STO on STO.NOART=STK.NOART and STO.DEPOT=STK.DEPOT
    where STK.DEPOT like('0%')
    AND STK.QTINV>0      
    AND NOT (STO.STFY1J>'00' AND DAYS(NOW()) - DAYS(STO.STFY1S!!STO.STFY1A!!'-'!!STO.STFY1M!!'-'!!STO.STFY1J) < 365)
    AND NOT (STO.STFY1J='00' AND DAYS(NOW()) - DAYS(STO.STCSS!!STO.STCAA!!'-'!!STO.STCMM!!'-'!!STO.STCJJ) < 365)
    AND (
    (STK.STODJ2 > '00' AND DAYS(NOW()) - DAYS(STK.STODS2!!STK.STODA2!!'-'!!STK.STODM2!!'-'!!STK.STODJ2) > 365)
    OR (STK.STNK18>0 AND STK.QTINV/STK.STNK18 > 180)
    )
    Il semblerait qu'il n'accepte pas l'opérateur !! pour la concaténation de chaîne quand je passe par le driver. Il me reste la solution d'utiliser concat() mais la lecture est bien moins aisée. Quelqu'un a t 'il déjà solutionné ce problème ?

    Bien à vous.

  2. #2
    Membre actif
    Homme Profil pro
    Architecte technique
    Inscrit en
    septembre 2010
    Messages
    129
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : Santé

    Informations forums :
    Inscription : septembre 2010
    Messages : 129
    Points : 208
    Points
    208

    Par défaut

    Effectivement, le raccourci "!!" à la place du CONCAT ne fonctionne que dans le requêteur interne. Si tu passe par un requêteur externe (ACS), cette syntaxe n'est plus acceptée, elle ne doit donc pas l'être dans le driver JDBC.
    Côté lisibilité, c'est un faux problème à mon avis. Il suffit d'isoler les lignes avec le CONCAT. Question d'habitude.

  3. #3
    Membre chevronné Avatar de bernard59139
    Profil pro
    Administrateur de base de données
    Inscrit en
    octobre 2006
    Messages
    882
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : octobre 2006
    Messages : 882
    Points : 1 849
    Points
    1 849

    Par défaut

    Bonjour

    je ne connais pas db2 i5, mais quelques notes générales.

    • ne pas confondre CONCAT() qui est une fonction et CONCAT qui est un opérateur.
    • des !! pas reconnus me fait penser à un problème de codepage. 2 logiciels connectés mais avec une personnalisation qui n'est pas totalement adaptée.


    sur ce, bonne journée

  4. #4
    Membre actif
    Homme Profil pro
    Architecte technique
    Inscrit en
    septembre 2010
    Messages
    129
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : Santé

    Informations forums :
    Inscription : septembre 2010
    Messages : 129
    Points : 208
    Points
    208

    Par défaut

    On parle bien de l'opérateur de concaténation, pas le de la fonction scalaire.
    Sinon, au lieu de "!!", il faudrait essayer "||" : [ALT-GR] + 6 (pas sur le pavé numérique, sur la pavé alpha).

Discussions similaires

  1. Réponses: 0
    Dernier message: 13/09/2011, 14h49
  2. Réponses: 2
    Dernier message: 10/09/2011, 10h52
  3. Access denied for user 'ODBC'@'localhost'
    Par Oxygan dans le forum Administration
    Réponses: 3
    Dernier message: 23/05/2007, 14h17
  4. Access denied for user 'ODBC'@'localhost' (using password: NO)
    Par Dextro dans le forum SQL Procédural
    Réponses: 6
    Dernier message: 24/01/2007, 18h38
  5. Réponses: 3
    Dernier message: 14/01/2006, 18h09

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo