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

SAGE Discussion :

X3V6_Requêteur SQL (GESALQ)_Fonction CASE


Sujet :

SAGE

  1. #1
    Membre habitué
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Octobre 2013
    Messages
    180
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2013
    Messages : 180
    Points : 196
    Points
    196
    Par défaut X3V6_Requêteur SQL (GESALQ)_Fonction CASE
    Bonjour,

    j'utilise X3V6 sous Oracle 11g. Dans la fonction GESALQ (requêteur SQL), je peux faire un 'CASE' (car langage SQL)
    Cela fonctionne : la requête renvoie le résultat attendu mais celui-ci ne s'affiche que sur 3 caractères.

    Autrement dit, seuls les 3 premiers caractères du résultat sont affichés (par exemple 'Gér' au lieu de 'Géré')
    Je ne comprends pas pourquoi. Le résultat reste identique même si je change le type de zone dans la requête (Alpha, texte, clob…)
    Voir exemple en PJ

    Une idée par afficher ma chaine de caractères EN ENTIER (ex : 10 caractères) ?
    Merci
    SD
    Fichiers attachés Fichiers attachés

  2. #2
    Membre éclairé
    Homme Profil pro
    Administrateur X3 - Sage 1000
    Inscrit en
    Janvier 2012
    Messages
    573
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Administrateur X3 - Sage 1000

    Informations forums :
    Inscription : Janvier 2012
    Messages : 573
    Points : 811
    Points
    811
    Par défaut
    J'ai le même problème et ni moi, ni l'intégrateur n'a trouvé de solution. Apparemment c'est un bug X3. Je vais passé en liste de patch 26 dans la semaine on verra si ça résout le problème.

    En attendant tu peux essayer de concaténer ton champ avec des espaces .... des fois ça marche (et des fois non ....)

    Edit : Je viens de voir dans ton fichier joint que le problème se posait sur des champs issu de menus locaux (apparemment).
    Tu peux essayer de récupérer l'intitulé du menu local directement dans la requête en faisant une jointure comme ça (exemple pour le menu local 318):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    left join  APLSTD ml318 on TON_champ= ml318.LANNUM_0 and ml318.LAN_0='FRA' and ml318.LANCHP_0=318
    et dans ta requête tu affiche ml318.LANMES_0 || " " (l'intitulé concaténé avec des espaces)

  3. #3
    Membre habitué
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Octobre 2013
    Messages
    180
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2013
    Messages : 180
    Points : 196
    Points
    196
    Par défaut
    merci pour cette réponse.
    Oui, je suis allé chercher les libellés dans la table APLSTD du coup mais pour une autre requête j'aurai besoin de la fonction 'CASE' ...
    Mais bon, si c'est un bug X3, va falloir être patient. Je suis en version patch 27 de X3 V6 donc c'est sans espoir pour le patch 26
    A+
    SD

  4. #4
    Membre actif
    Homme Profil pro
    Développeur SAGE X3
    Inscrit en
    Octobre 2009
    Messages
    108
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur SAGE X3

    Informations forums :
    Inscription : Octobre 2009
    Messages : 108
    Points : 227
    Points
    227
    Par défaut
    Bonjour,

    avez-vous essayé votre requête SQL directement dans votre manager ?
    Pourriez-vous nous faire suivre cette requête pour tests ?
    C'est étonnant, car personnellement je ne suis pas encore arrivé à bloquer le requêteur SQL contrairement au 2 autres...

  5. #5
    Membre éclairé
    Homme Profil pro
    Administrateur X3 - Sage 1000
    Inscrit en
    Janvier 2012
    Messages
    573
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Administrateur X3 - Sage 1000

    Informations forums :
    Inscription : Janvier 2012
    Messages : 573
    Points : 811
    Points
    811
    Par défaut
    Une requête toute simple qui ne sert à rien .... à part mettre en évidence le bug:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    select ITMREF_0,
    case ITMREF_0
       when '0000000' then 'article zero'
       else 'article pas zero'
    end
    from ITMMASTER
    Que je mettes, ou pas, la définition de colonne, le résultat du case est tronqué :
    Nom : dev1.JPG
Affichages : 678
Taille : 19,7 Ko

  6. #6
    Membre habitué
    Homme Profil pro
    Administrateur ERP X3V5
    Inscrit en
    Octobre 2012
    Messages
    133
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Administrateur ERP X3V5
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2012
    Messages : 133
    Points : 199
    Points
    199
    Par défaut
    Pour info, en V5 patch 12, sous SQL Server, je ne constate pas le problème. J'ai bien le résultat du CASE en entier.

  7. #7
    Membre actif
    Homme Profil pro
    Développeur SAGE X3
    Inscrit en
    Octobre 2009
    Messages
    108
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur SAGE X3

    Informations forums :
    Inscription : Octobre 2009
    Messages : 108
    Points : 227
    Points
    227
    Par défaut
    Ah oui, l'exemple est très simple !
    C'est vraiment propre à X3 ou Oracle ? cette même requête sous SQLplus par exemple revient correctement chez vous ?
    Un CAST ne vous aide pas ?
    Dommage, je trouvais ce problème intéressant, mais je n'ai malheureusement d'oracle à ma dispo en ce moment.

  8. #8
    Membre éclairé
    Homme Profil pro
    Administrateur X3 - Sage 1000
    Inscrit en
    Janvier 2012
    Messages
    573
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Administrateur X3 - Sage 1000

    Informations forums :
    Inscription : Janvier 2012
    Messages : 573
    Points : 811
    Points
    811
    Par défaut
    Cette requête dans SQLPlus ou un ETL fonctionne très bien. C'est lié au requêteur X3.

    Le cast est effectivement une solution de contournement comme la concaténation avec des espaces:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    select ITMREF_0,
    cast (case ITMREF_0
       when '0000000' then 'article zero'
       else 'article pas zero'
    end as VARCHAR(100))
    from ITMMASTER
    Remarque : si on cast en VARCHAR(40) le texte est quand même incomplet !!
    ou

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    select ITMREF_0,
    case ITMREF_0
       when '0000000' then 'article zero'
       else 'article pas zero'
    end || '                                                                        '
    from ITMMASTER

  9. #9
    Membre actif
    Homme Profil pro
    Développeur SAGE X3
    Inscrit en
    Octobre 2009
    Messages
    108
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur SAGE X3

    Informations forums :
    Inscription : Octobre 2009
    Messages : 108
    Points : 227
    Points
    227
    Par défaut
    Pour vérifier si X3 ne fait pas correctement son boulot, il est possible d'aller vérifier les sources des traitements générés à la validation.
    dans le répertoire TRT de votre dossier applicatif. Si votre requête se nomme TOTO, vous devriez avoir un WMMTOTO.src.
    Aller dans l'étiquette LECTURE, et vérifier comment il a généré votre requête:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    For (
    &  Char     C1(20)
    & ,Char     C2(16)
    & ) From '5' Sql TEXTE(1..5) As [SQL0]
    Chez moi, votre 2ème colonne est en 16 caractères, chez vous elle doit être en 3 caractères !

  10. #10
    Membre éclairé
    Homme Profil pro
    Administrateur X3 - Sage 1000
    Inscrit en
    Janvier 2012
    Messages
    573
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Administrateur X3 - Sage 1000

    Informations forums :
    Inscription : Janvier 2012
    Messages : 573
    Points : 811
    Points
    811
    Par défaut
    Vraiment très intéressant cet échange.

    alors la requête suivante
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    select ITMREF_0,
    cast (case ITMREF_0
       when '0000000' then 'article zero'
       else 'article pas zero'
    end  as VARCHAR(30))
    from ITMMASTER
    donne dans le ficher WMMxxxxx :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    For (
    &  Char     C1(20)
    & ,Char     C2(10)
    & ) From '3' Sql TEXTE(1..6) As [SQL0]
    Sans le CAST ça donne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    .....
    For (
    &  Char     C1(20)
    & ,Char     C2(5)
    & ) From '3' Sql TEXTE(1..6) As [SQL0]
    ......
    Je me suis amusé à modifier le fichier WMMxxx.src puis à le recompiler. J'ai ensuite executer la requête (sans la valider bien sûr), et j'ai toujours le problème

  11. #11
    Membre actif
    Homme Profil pro
    Développeur SAGE X3
    Inscrit en
    Octobre 2009
    Messages
    108
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur SAGE X3

    Informations forums :
    Inscription : Octobre 2009
    Messages : 108
    Points : 227
    Points
    227
    Par défaut
    Alors là, c'est plutôt étrange ! char (5) et il ne renvoi que 3 caractères.
    C'est la fonction L4G sql qui ne retourne pas ce qu'il faut. Quelle est la version de votre runtime de traitement ? (j'ai regardé dans les corrections déjà réalisées, il y en a plusieurs sur sql mais pas de ce genre...)

    J'allais justement vous proposer d 'éditer ce traitement WMMxxx.src (sans le cast), le compiler et vérifier. De forcer par exemple à char (20). Le champ receveur à l'air d'être correctement typé.
    De mon côté j'ai même essayé de typer le champ comme l'article avec ITM, mais il doit y avoir une analyse de la requête sql avant sa construction.
    Si vous avez la possibilité de remonter cela à SAGE, ça sent quand même le bug... non ? Vous leur aurez déjà prémâcher l'analyse...
    Je ne vois pas ce que nous pourrions analyser de plus, désolé.

    Ce serait quand même intéressant d'avoir un autre utilisateur avec oracle qui puisse nous confirmer le même souci, ou pas.
    A voir...

  12. #12
    Membre éclairé
    Homme Profil pro
    Administrateur X3 - Sage 1000
    Inscrit en
    Janvier 2012
    Messages
    573
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Administrateur X3 - Sage 1000

    Informations forums :
    Inscription : Janvier 2012
    Messages : 573
    Points : 811
    Points
    811
    Par défaut
    Citation Envoyé par rvduclos Voir le message
    Alors là, c'est plutôt étrange ! char (5) et il ne renvoi que 3 caractères.
    Non,non !! Il renvoie bien 5 caractères , voir copie d'écran plus haut. Ce qui est étrange c'est que la dimension du Char ne corresponde pas à la requête (cas du CAST) ou à la taille de la donnée dans la base.

    Citation Envoyé par rvduclos Voir le message
    Si vous avez la possibilité de remonter cela à SAGE, ça sent quand même le bug... non ? Vous leur aurez déjà prémâcher l'analyse...
    Je ne vois pas ce que nous pourrions analyser de plus, désolé.
    J'ai remonté à mon intégrateur qui a du, je l'espère remonté à Sage.

    Citation Envoyé par rvduclos Voir le message
    Ce serait quand même intéressant d'avoir un autre utilisateur avec oracle qui puisse nous confirmer le même souci, ou pas.
    A voir...
    On est déjà 2 (SD_X3 et moi).

    Sinon il y a d'autres fonctionnalités purement ORACLE qui fonctionne un peu bizarrement dans le requeteur mais ce sont des fonction beaucoup plus complexe que le simple CASE : SYS_CONNECT_BY_PATH mais c'est une autre histoire ....

  13. #13
    Membre habitué
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Octobre 2013
    Messages
    180
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2013
    Messages : 180
    Points : 196
    Points
    196
    Par défaut
    Bonjour,

    oui je fais le même constat que vous, même en modifiant le traitement WMMxxx.src
    Mon interlocuteur SAGE (pas un intégrateur mais Sage en direct) me confirme avoir ouvert un ticket auprès du service développement.
    Correction au patch 28 ?

    Merci pour les explications
    SD

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [SQL] Recupération valeur case à cocher
    Par lili1985 dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 24/06/2008, 23h30
  2. [SQL] Explode pour cases à cocher
    Par philippef dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 28/08/2007, 17h12
  3. [SQL] First Upper Case
    Par psykbe dans le forum Requêtes et SQL.
    Réponses: 9
    Dernier message: 23/04/2007, 16h23
  4. [PL/SQL] Probleme de CASE
    Par Bahan dans le forum Oracle
    Réponses: 1
    Dernier message: 16/08/2006, 18h53
  5. [PL SQL] Problème avec 'case' dans une fonction
    Par divail dans le forum Oracle
    Réponses: 14
    Dernier message: 13/03/2006, 16h50

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