IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

DB2 Discussion :

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


Sujet :

DB2

  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 : 44
    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 & logiciel IBM i
    Inscrit en
    Septembre 2010
    Messages
    179
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Architecte technique & logiciel IBM i
    Secteur : Conseil

    Informations forums :
    Inscription : Septembre 2010
    Messages : 179
    Points : 275
    Points
    275
    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
    950
    Détails du profil
    Informations personnelles :
    Localisation : France

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

    Informations forums :
    Inscription : Octobre 2006
    Messages : 950
    Points : 2 064
    Points
    2 064
    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 & logiciel IBM i
    Inscrit en
    Septembre 2010
    Messages
    179
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Architecte technique & logiciel IBM i
    Secteur : Conseil

    Informations forums :
    Inscription : Septembre 2010
    Messages : 179
    Points : 275
    Points
    275
    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