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

WinDev Discussion :

mise en forme date pour SQLEXEC


Sujet :

WinDev

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 6
    Points : 3
    Points
    3
    Par défaut mise en forme date pour SQLEXEC
    j'utilise la fonction SQLEXEC pour lire des données d'un fichier d'une base oracle(Oracle Provider for OLEDB)

    dans mon SQL j'ai une date que j'alimente par une variable sai_date
    ".... AND SCOGFOFE.OFE_DATELIV = "+SAI_Date+ ...."

    le format de la date doit être JJ-MMM-AA sinon l'execution du sql n'aboutit pas avec MMM qui est le mois abrégé en lettre en anglais (ex février = FEB)

    la variable sai_date provient d'un champs de saisie

    je n'ai pas trouvé dans la description du champs le "bon" format pour la valeur retournée

    est ce que le format de la date peut être personnalisé dans les paramètres du projet ou est ce que je dois créer une procédure pour transformer le format de ma date ?? si c'est la 2ème réponse merci de m'aider dans la rédaction du code sachant que ma date est au format AAAAMMJJ au départ

  2. #2
    Membre éprouvé
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    552
    Détails du profil
    Informations personnelles :
    Localisation : Laos

    Informations forums :
    Inscription : Mars 2003
    Messages : 552
    Points : 1 193
    Points
    1 193
    Par défaut
    Bonjour,

    Un petit tour dans l'aide Windev nous donne cette syntaxe :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    Res = DateVersChaîne("20011225")   // Res = "25/12/2001"
    Res = DateVersChaîne(EntierVersDate(73773)) // Res = "25/12/2001"
    DateVersChaîne("")      // Retourne ""
    Res = DateVersChaîne("20011225", "MM-JJ-AAAA") // Res = "12-25-2001"
    Res = DateVersChaîne("20011225", ...
         "Le numéro du jour JJ du mois n° MM de l'année AAAA")
    Res = DateVersChaine("20031202","JJJ JJ MMM AAAA") //Res = "Mar. 02 Déc. 2003"
    Res = DateVersChaine("20031202","JJJJ JJ MMMM AAAA") //Res = "Mardi 02 Décembre 2003"
    bien entendu SAI_Date dans votre exemple doit être au format date dans l'IHM. Donc votre syntaxe devrait ressembler à cela :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Res = DateVersChaîne("20011225", "MMM-JJ-AAAA") // Res = "Nov.-25-2001"
    Cordialement.

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 6
    Points : 3
    Points
    3
    Par défaut
    j'avais bien vu l'aide mais moi je dois obtenir un format qui, à priori, n'existe pas dans Windev.

    j'ai besoin de récupérer la date au format JJ-MMM-AA avec MMM = 3 lettres du mois MAIS en anglais
    par exemple pour le 20100824 je dois avoir 24-AUG-10

    merci

  4. #4
    Membre expérimenté
    Inscrit en
    Août 2010
    Messages
    726
    Détails du profil
    Informations forums :
    Inscription : Août 2010
    Messages : 726
    Points : 1 645
    Points
    1 645
    Par défaut
    Je n'ai pas de serveur Oracle sous la main, mais je pense que vous pouvez faire ça (je reprends votre code) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    "...... AND SCOGFOFE.OFE_DATELIV = TO_DATE('"+SAI_Date+"','YYYYMMDD') ....."

  5. #5
    Membre actif Avatar de peijnoob
    Profil pro
    Développeur informatique
    Inscrit en
    Août 2006
    Messages
    279
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2006
    Messages : 279
    Points : 294
    Points
    294
    Par défaut
    Pour le coup des 3 lettres en anglais c'est un problème pas bien compliqué à résoudre. Nous nous en servons souvent.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    PROCEDURE MoisAnglais(nNumMois est un entier)
     
    SI nNumMois < 0 _OU_ nNumMois > 12
      RENVOYER ""
    FIN
     
    tabMois est un tableau de 12 chaînes
    tabMois[1] = "JAN"
    tabMois[2] = "FEB"
    tabMois[3] = "MAR"
    [...] // Finir de déclarer les mois
     
    RENVOYER tabMois[nNumMois]
    Voilà, tu peux récupérer ton mois en lettres anglaises.
    Et pour la conversion inverse, avec un tableau associatif, c'est tout aussi facile.

    D'un autre côté, pourquoi la date est stockée dans ce format sur le serveur ?
    C'est quand même bien plus pratique d'utiliser des standards..

  6. #6
    Membre expérimenté
    Inscrit en
    Août 2010
    Messages
    726
    Détails du profil
    Informations forums :
    Inscription : Août 2010
    Messages : 726
    Points : 1 645
    Points
    1 645
    Par défaut
    Pour modifier le format utilisé par Oracle, il faut faire un ALTER SESSION pour modifier le paramètre NLS_DATE_FORMAT.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    ALTER SESSION 
       SET NLS_DATE_FORMAT = 'YYYYMMDD';
    Ou si vous voulez juste que ça passe en français :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    ALTER SESSION 
       SET NLS_DATE_LANGUAGE = French;
    Coder soi-même la conversion me semble la pire des solutions.

    Notez que ce n'est pas le format "stocké", mais simplement le cast implicite par défaut. Le TO_DATE qui est fait implicitement quand vous comparez/affectez une chaîne à une date.

  7. #7
    Candidat au Club
    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 6
    Points : 3
    Points
    3
    Par défaut
    @ Hibernatus

    je développe en windev 14 et les fonctions TO_DATE et ALTER SESSION ne sont pas reconnues ...

    merci pour les réponses je crois bien que je vais écrire moi même le code de la mise en forme !!

  8. #8
    Membre expert
    Avatar de mail.spam
    Homme Profil pro
    Développeur Windev et technicien maintenance
    Inscrit en
    Janvier 2008
    Messages
    1 914
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Windev et technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2008
    Messages : 1 914
    Points : 3 803
    Points
    3 803
    Par défaut
    Bonjour,

    TO_DATE et ALTER SESSION sont des commandes SQL
    la touche est ton amie. l'aide ne mord pas quand on la consulte...
    PS : n'oubliez jamais que nous ne sommes pas avec vous sur le projet. Donc plus vous donnez d'informations et d'exemples de codes et plus nous pourrons vous aider. (Un exemple vaut mieux que de longs discours...)

    Pensez à utiliser les votes et à cliquer sur , merci

  9. #9
    Membre actif Avatar de peijnoob
    Profil pro
    Développeur informatique
    Inscrit en
    Août 2006
    Messages
    279
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2006
    Messages : 279
    Points : 294
    Points
    294
    Par défaut
    A priori ce ne devrait pas être un problème vu que tu interroges le serveur en SQL non ?
    Windev "corrige" les requêtes avant de les envoyer au SGBD donc c'est là que ça ne doit pas passer, mais en utilisant la constante "hRequêteSansCorrection" lors de l'appel, normalement, il envoie la requête sans y toucher.
    A partir de là, si la requête est compréhensible par le SGBD, ça devrait fonctionner.

    Après, je n'ai jamais travaillé sous Oracle donc je suis peut-être complètement à côté de la plaque !

  10. #10
    Membre expérimenté
    Inscrit en
    Août 2010
    Messages
    726
    Détails du profil
    Informations forums :
    Inscription : Août 2010
    Messages : 726
    Points : 1 645
    Points
    1 645
    Par défaut
    C'est vrai, il faut utiliser hRequêteSansCorrection, surtout que c'est bien plus rapide. Mais visiblement ici c'est du SQLExec (pourquoi d'ailleurs ?), donc c'est déjà OK.
    Sachez que les fonctions SQL décrites dans la doc de WD concernent HF, le SGBD intégré à WD. Vous n'utilisez pas HF mais Oracle.

Discussions similaires

  1. [AC-2007] Mise en forme conditionnelle pour les lignes entières
    Par Oliv'83 dans le forum IHM
    Réponses: 8
    Dernier message: 25/08/2017, 14h24
  2. [AC-2003] mise en forme conditionnelle pour une liste modifiable
    Par Miss Ti dans le forum VBA Access
    Réponses: 4
    Dernier message: 17/06/2009, 14h37
  3. [XL-2007] Mise en forme conditionnelle pour une évolution (flèches)
    Par Razorback dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 03/06/2009, 15h00
  4. Mise en forme conditionnelle pour une date
    Par Michel DELAVAL dans le forum Access
    Réponses: 4
    Dernier message: 03/10/2006, 21h31
  5. Réponses: 3
    Dernier message: 23/06/2006, 11h58

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