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

AS/400 Discussion :

STRSQL : DATE qui ne veut pas s'afficher


Sujet :

AS/400

  1. #1
    Membre habitué Avatar de TSalm
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    361
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 361
    Points : 177
    Points
    177
    Par défaut STRSQL : DATE qui ne veut pas s'afficher
    Bonjour,

    J'utilise la commande STRSQL

    J'ai un champ MEFF de type DATE.

    Quand je fais cette requête, '++++++++' s'affiche au lieu de ma date :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT MEFF
    FROM MASHP1
    J'ai aussi tenté :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT TO_CHAR(MEFF,'JJMMYYYY')
    FROM MASHP1
    Ce qui me retourne l'erreur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    L'argument 1 de la fonction TO_CHAR est incorrect.
    Merci pour votre aide,
    Tsalm

  2. #2
    Membre habitué
    Inscrit en
    Novembre 2008
    Messages
    149
    Détails du profil
    Informations forums :
    Inscription : Novembre 2008
    Messages : 149
    Points : 149
    Points
    149
    Par défaut sql
    bonjour,

    sans etre un spécialiste de sql il me semble qu'il faut indiquer au select la bibliothèque et le fichier sur lequel va porter la requete plus la zone de recherché soit : select from bib/fic where dat > 20081205

    essaie et tiens nous au courant

    bien cordialement

    roger

  3. #3
    Membre expérimenté

    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    1 298
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 1 298
    Points : 1 578
    Points
    1 578
    Par défaut
    Cela semble vouloir dire que la colonne MEFF ne contient pas une valeur de date valide.

    Pour t'en assurer, fais :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Select RRN(MASHP1), MEFF from MASHP1
    Récupére le RRN du record qui a une date ++++

    Sors de SQL et fais :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DSPPFM MASHP1 FROMRCD( mets ici la valeur du RRN récupéré )
    puis contrôle sur le premier record si le contenu de la colonne MEFF est bien une date cohérente.

  4. #4
    Membre habitué Avatar de TSalm
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    361
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 361
    Points : 177
    Points
    177
    Par défaut
    DSPPFM m'affiche quelquechose comme ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    *...+....1....+....2....+....3....+....4....+...
    ±R         H                                
    A         H                                
    €P         H                                
    ±A         H                                
    P         H                                
                  ****** FIN DES DONNEES ******
    Par contre, c'est un 4GL qui a généré ces champs. Si je jette un oeil sur le type via l'outil WRKQRY, le champ est de type :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Zone            Texte                                                 Long Déc 
    MEFF            Date d'effet                                           10   L
    Est-ce que ç'est une date ou non ?

  5. #5
    Membre habitué Avatar de TSalm
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    361
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 361
    Points : 177
    Points
    177
    Par défaut
    Citation Envoyé par rcordonnier Voir le message
    sans etre un spécialiste de sql il me semble qu'il faut indiquer au select la bibliothèque et le fichier sur lequel va porter la requete plus la zone de recherché soit : select from bib/fic where dat > 20081205
    Oui, on peut aussi faire comme ça, mais ce n'est pas obligatoire tant que le fichier est bien dans ma liste de bib.

  6. #6
    Membre habitué Avatar de TSalm
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    361
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 361
    Points : 177
    Points
    177
    Par défaut
    WRKQRY qui d'ailleurs m'affiche les bons résultats :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     Ligne  ....+....1 
            MEFF       
     000001 0001-01-01 
     000002 0001-01-01 
     000003 0001-01-01 
     000004 0001-01-01 
     000005 0001-01-01

  7. #7
    Membre régulier

    Inscrit en
    Décembre 2006
    Messages
    95
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 95
    Points : 75
    Points
    75
    Par défaut
    Salut

    Est-tu sur que les champs sont remplis ?

    Les dates en ++++++++ sont affiché quand la zone est vide (0000/00/00).

  8. #8
    Membre expérimenté

    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    1 298
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 1 298
    Points : 1 578
    Points
    1 578
    Par défaut
    Citation Envoyé par TSalm
    Par contre, c'est un 4GL qui a généré ces champs. Si je jette un oeil sur le type via l'outil WRKQRY, le champ est de type :
    Code :

    Zone Texte Long Déc
    MEFF Date d'effet 10 L

    Est-ce que ç'est une date ou non ?
    Oui, la zone MEFF est bien définie en tant que zone date, en effet.

    Mais ce que je constate au travers de ton "WRKQRY", c'est que la date contient la valeur "0001-01-01" qui est la valeur donnée par défaut par le gestionnaire DB2 à des zones date non alimentées. Mais maintenant que je presens ton souci, je vais te dépanner, enfin je l'espère.

    Sous STRSQL, fais <F13> puis tape "1" dans la zone "Sélection". Ensuite, dans la zone "Date format" indique "*ISO" et valide par 2 fois <Entrée>.
    Repasse ensuite ta SELECT et tu verras alors la date s'afficher correctement en principe.

    Pourquoi ça marche maintenant et que ça marchait pas avant
    Sous STRSQL, les formats d'affichage *MDY, *DMY, *YMD et *JUL affichent tous l'année sur 2 caractères et non pas sur 4. Or, par convention, IBM a décidé que, sous ces formats, si l'année est comprise entre 40 et 99, la date est alors comprise entre 1940 et 1999, sinon la date est comprise entre 2000 et 2039. Or, l'année de la date qui nous concerne est 0001 et cette année n'est pas comprise entre 1940 et 2039, d'où les +++++ que tu avais. Ce n'était juste qu'un problème d'affichage, les dates dans le fichier ne sont pas "vérolées".

    Dis-nous quand même ce qui en est en final.

  9. #9
    Membre expérimenté

    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    1 298
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 1 298
    Points : 1 578
    Points
    1 578
    Par défaut
    Citation Envoyé par BBert
    Les dates en ++++++++ sont affiché quand la zone est vide (0000/00/00).
    Non, tu fais erreur. Quand les zones date ne sont pas alimentées ("vides") dans les fichires et/ou tables DB2, elles prennent la valeur "0001-01-01", c'est à dire le 1er Janvier de l'an 0001, par convention standard IBM.

    Que signifieraient sinon une année zéro, un mois zéro et un jour zéro ? Le Big-Bang ?

  10. #10
    Membre habitué Avatar de TSalm
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    361
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 361
    Points : 177
    Points
    177
    Par défaut
    Ca fonctionne !
    Merci Mercure

  11. #11
    Membre régulier

    Inscrit en
    Décembre 2006
    Messages
    95
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 95
    Points : 75
    Points
    75
    Par défaut
    Citation Envoyé par Mercure Voir le message
    Non, tu fais erreur. Quand les zones date ne sont pas alimentées ("vides") dans les fichires et/ou tables DB2, elles prennent la valeur "0001-01-01", c'est à dire le 1er Janvier de l'an 0001, par convention standard IBM.

    Que signifieraient sinon une année zéro, un mois zéro et un jour zéro ? Le Big-Bang ?
    C'est vrai, et comme l'AS ne date pas du big bang...

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

Discussions similaires

  1. Image qui ne veut pas s'afficher
    Par vince85 dans le forum Interfaces Graphiques en Java
    Réponses: 1
    Dernier message: 17/06/2011, 13h40
  2. Page PHP qui ne veut pas s'afficher
    Par skandhal dans le forum Langage
    Réponses: 18
    Dernier message: 30/11/2010, 15h25
  3. graphique qui ne veut pas s'afficher
    Par momoh dans le forum ASP.NET
    Réponses: 0
    Dernier message: 11/05/2009, 09h46
  4. Réponses: 7
    Dernier message: 03/02/2008, 14h08
  5. JList qui ne veut pas s'afficher
    Par hamham dans le forum Composants
    Réponses: 16
    Dernier message: 29/01/2007, 18h20

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