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 :

problème avec datetime en windev [WD18]


Sujet :

WinDev

  1. #1
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2018
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2018
    Messages : 8
    Points : 4
    Points
    4
    Par défaut problème avec datetime en windev
    bonjour à tous,

    SOS SUR LE TYPE DATETIME EN WINDEV

    je vous explique:

    l'insertion dans MySQL depuis Windev marche (voir)Nom : date ds mysql.PNG
Affichages : 1893
Taille : 2,6 Ko

    mais c'est l'affichage des occurrences de date (datetime) dans une table Windev qui ne marche pas (voir résultat)Nom : resultat.PNG
Affichages : 1912
Taille : 6,6 Ko



    merci de m'aider
    Images attachées Images attachées   

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour, on peut voir votre requête SQL? pour moi, quand vous faites
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    dhSaisirle est une dateHeure=SQLLitCol("REQ1",4)
    , ne doit pas être une date heure au format WLanguage, pour moi, vous devriez appliquer une conversion en chaine dans votre requête SQL afin d'avoir un résultat au format AAAAMMJJHHMMSSCCC

  3. #3
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2018
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2018
    Messages : 8
    Points : 4
    Points
    4
    Par défaut
    jai essayé quelques conversion mais en vain.

    voici mon code
    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
    i est un entier = 0
    SQLExec(" select * from pays2","REQ1")
    // Récupérer la requête ligne à ligne
    TANTQUE SQLFetch("REQ1") = 0 
    	// Il y a encore une ligne
    	i++
    	// Récupérer les données
    	id est un entier = SQLLitCol("REQ1",1)
    	code est une chaîne = SQLLitCol("REQ1", 2)
    	nom est une chaîne = SQLLitCol("REQ1",3)
    	dhSaisirle est une DateHeure= SQLLitCol("REQ1",4)
    	//hSaisirle est une date=ChaîneVersDate(sSaisirle,"JJ/MM/AAAA")
    	//hDath est une heure=Remplace(milieu(sSaisirle,10,8),":"," ")
    	//dhMadate est une dateheure=hSaisirle+hDath
    	TableAjoute(TABLE_pays,id+TAB+code+TAB+nom+TAB+dhSaisirle)
    FIN 
    SQLFerme("REQ1")

  4. #4
    Rédacteur/Modérateur

    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Décembre 2013
    Messages
    4 055
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes
    Secteur : Conseil

    Informations forums :
    Inscription : Décembre 2013
    Messages : 4 055
    Points : 9 394
    Points
    9 394
    Par défaut
    Quand tu fais select * from pays2, tu pars sur une mauvaise base.

    Le client SQL te renvoie la date, mis il la renvoie probablement dans un format 'lisible par un humain'. Il s'appuie sur les paramètres régionaux de Windows, pour te formater la chaine d'une certaine façon. Et demain, tu vas changer d'ordinateur, ou de version Windows, ou autre, et le format choisi par windows ne sera peut-être plus le même.

    La sécurité, c'est de faire select to_char(date_heure , 'YYYYMMDDHHMISS' ) from pays2.
    Vérifie dans l'aide de MYSQL la syntaxe pour formater une date en chaine de caractère.
    En faisant comme ça, tu es sûr de recevoir un format qui est toujours le même , et celui que TU as choisi, pas celui choisi par Windows.
    N'oubliez pas le bouton Résolu si vous avez obtenu une réponse à votre question.

  5. #5
    Invité
    Invité(e)
    Par défaut
    Dans les langages comme le .NET, faire une requête n'est pas vraiment un problème car lors de la lecture, il est possible de dire de récupérer une valeur par rapport au nom de la colonne, ce qui n'est pas le cas avec les fonctions SQLXXX qui font appel à un indice de colonne, ce qui n'est pas l'idéal...
    Par mesure de précaution, il faut mettre en clair les noms des colonnes que la requête SELECT doit faire afficher.
    En MySQL, pour convertir une date en chaine, il faut faire appel à la fonction DATE_FORMAT

    EDIT: select DATE_FORMAT(saisieLe, "%Y%m%d%H%i%s")

  6. #6
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2018
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2018
    Messages : 8
    Points : 4
    Points
    4
    Par défaut
    désolé j'ai fais ce ke vous avez dit mais ca ne marche pas. le code ci-dessous
    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
    SQLExec(" select PaysId, codepays, nompays, date_format(saisirle, '"+"%d%m%Y%T"+"') as saisirle from pays2","REQ1")
    // Récupérer la requête ligne à ligne
    TANTQUE SQLFetch("REQ1") = 0 
    	// Il y a encore une ligne
    	i++
    	// Récupérer les données
    	id est un entier = SQLLitCol("REQ1",1)
    	code est une chaîne = SQLLitCol("REQ1", 2)
    	nom est une chaîne = SQLLitCol("REQ1",3)
    	sSaisirle est une chaîne= SQLLitCol("REQ1",4)
    	dSaisirle est une Date=ChaîneVersDate(Milieu(sSaisirle,1,8),"JJ/MM/AAAA")
    	hDath est une Heure=Remplace(Milieu(sSaisirle,9,8)," ",":")
    	dhMadate est une DateHeure=dSaisirle+" "+hDath
    	//Remplac
    	TableAjoute(TABLE_pays,id+TAB+code+TAB+nom+TAB+dhMadate)
    FIN 
    SQLFerme("REQ1")

  7. #7
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par LeModel Voir le message
    désolé j'ai fais ce ke vous avez dit mais ca ne marche pas. le code ci-dessous
    Comme le dit si bien Voroltinquo, je n'ai pas ma boule de cristal sur moi...
    Message d'erreur? A titre d'info, nous ne connaissons pas le nom des colonnes de votre table

  8. #8
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2018
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2018
    Messages : 8
    Points : 4
    Points
    4
    Par défaut
    le pb c'est l'affichage dans la table (grille) windev: Nom : tablewindev.PNG
Affichages : 1888
Taille : 8,8 Ko

  9. #9
    Invité
    Invité(e)
    Par défaut
    Oui normal, la valeur retournée est une donnée au format AAMMJJHHMMSS, dans votre code, vous envoyez la donnée au format JJ/MM/AAAA HHMMSS, ce qui n'est pas du tout la même chose.

  10. #10
    Rédacteur/Modérateur

    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Décembre 2013
    Messages
    4 055
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes
    Secteur : Conseil

    Informations forums :
    Inscription : Décembre 2013
    Messages : 4 055
    Points : 9 394
    Points
    9 394
    Par défaut
    Dans le tout premier message, vous avez mis une image avec :
    Format d'affichage : JJ/MM/AAAA ... ...
    Format de Saisie : JJ/MM/AAAA ... ...
    Valeur Retournée : AAAAMMJJ ... ...

    Le format d'affichage, ou le format de saisie, ça ne nous intéresse pas pour l'instant, c'est de la cosmétique. Ce qui nous intéresse, c'est ce qu'il y a dans Valeur Retournée.
    Dans valeur retournée, il y a AAAAMMJJ ... ...
    Ca veut dire que dans l'instruction TABLEAJOUTELIGNE(), les dates doivent être en format AAAAMMJJ


    Dans votre code, en ligne 10, vous avez une variable sSaisierle qui a normalement le bon format.
    Puis en lignes 11,12,13, vous modifiez le format, pour ajouter des séparateurs.

    En ligne 15, remplacez votre code actuel par :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    TableAjoute(TABLE_pays,id+TAB+code+TAB+nom+TAB+sSaisierle )
    Et ça devrait marcher.

    Et je préfère TableAjouteLigne, plutôt que TableAjoute; mais c'est un autre débat.
    N'oubliez pas le bouton Résolu si vous avez obtenu une réponse à votre question.

  11. #11
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2018
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2018
    Messages : 8
    Points : 4
    Points
    4
    Par défaut
    avec vos instruction
    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
    SQLExec(" select PaysId, codepays, nompays, date_format(saisirle, '"+"%d%m%Y%T"+"') as saisirle from pays2","REQ1")
    // Récupérer la requête ligne à ligne
    TANTQUE SQLFetch("REQ1") = 0 
    	// Il y a encore une ligne
    	i++
    	// Récupérer les données
    	id est un entier = SQLLitCol("REQ1",1)
    	code est une chaîne = SQLLitCol("REQ1", 2)
    	nom est une chaîne = SQLLitCol("REQ1",3)
    	sSaisirle est une chaîne= SQLLitCol("REQ1",4)
    	//dSaisirle est une date=ChaîneVersDate(milieu(sSaisirle,1,8),"JJ/MM/AAAA")
    	//hDath est une heure=Remplace(milieu(sSaisirle,9,8)," ",":")
    	//dhMadate est une dateheure=dSaisirle+" "+hDath
    	//Remplac
    	TableAjouteLigne(TABLE_pays,id, code,nom,sSaisirle)
    FIN 
    SQLFerme("REQ1")
    le resultat est negatifNom : tableau_merde.PNG
Affichages : 1872
Taille : 8,4 Ko

  12. #12
    Invité
    Invité(e)
    Par défaut
    Si vous remplacez
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SQLExec(" select PaysId, codepays, nompays, date_format(saisirle, '"+"%d%m%Y%T"+"') as saisirle from pays2","REQ1")
    par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SQLExec(" select PaysId, codepays, nompays, date_format(saisirle, '%Y%m%d%H%i%s') as saisirle from pays2","REQ1")
    vous obtenez quoi?

  13. #13
    Expert confirmé
    Avatar de Voroltinquo
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Juin 2017
    Messages
    2 808
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Chef de projet en SSII

    Informations forums :
    Inscription : Juin 2017
    Messages : 2 808
    Points : 5 267
    Points
    5 267
    Billets dans le blog
    1
    Par défaut
    Bonjour,
    Après Nom : BouleCristal.gif
Affichages : 1832
Taille : 1,7 Ko (petit bonjour à Romulus),
    Je suppose que le script de création de ta table ressemble à ça:
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    CREATE TABLE `LeModel` (
        `PK_LeModel` INTEGER  PRIMARY KEY ,
        `NDX_CodeIndicatif` INTEGER  NOT NULL  DEFAULT 0,
        `Nom` VARCHAR(40) ,
        `SaisiLe` TIMESTAMP );
    CREATE INDEX `WDIDX_LeModel_NDX_CodeIndicatif` ON `LeModel` (`NDX_CodeIndicatif`);
    Il est à noter que TIMESTAMP est du type Windev AAAAMMJJHHMMSSCCC

    En alimentant la champ table via la table LeModel avec un champ SaisiLe de cette forme
    Nom : 2018-03-02_11h09_36.png
Affichages : 1882
Taille : 15,4 Ko
    J'obtiens cela :
    Nom : 2018-03-02_11h10_18.png
Affichages : 1929
Taille : 17,9 Ko

    C'est à priori le résultat que tu recherches.
    Si tu désires séparer la date et l'heure, il suffit d'ajouter les colonnes idoines et de les remplir via les fonctions de gestion Date/Heure au niveau du code du champ table (affichage d'une ligne)
    Il y a peut-être plus simple, mais ça tourne.
    Quand tout a échoué utilisez l'option RTFM

  14. #14
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2018
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2018
    Messages : 8
    Points : 4
    Points
    4
    Par défaut
    En fin bravo et un très grand merci à tout le monde, la solution de romulus001 à resolut mon probleme.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    SQLExec(" select PaysId, codepays, nompays, date_format(saisirle, '"+"%Y%m%d%H%i%s"+"') as saisirle from pays2","REQ1")
    // Récupérer la requête ligne à ligne
    TANTQUE SQLFetch("REQ1") = 0 
    	// Il y a encore une ligne
    	i++
    	// Récupérer les données
    	id est un entier = SQLLitCol("REQ1",1)
    	code est une chaîne = SQLLitCol("REQ1", 2)
    	nom est une chaîne = SQLLitCol("REQ1",3)
    	dhSaisirle est une DateHeure= SQLLitCol("REQ1",4)
    	TableAjouteLigne(TABLE_pays,id, code,nom,dhSaisirle)
    FIN 
    SQLFerme("REQ1")

    Encore et encore un très grand merci à tout le monde et longue vie à vous

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

Discussions similaires

  1. Problème avec datetime local
    Par alexj78 dans le forum Langage
    Réponses: 7
    Dernier message: 19/08/2014, 11h05
  2. Problème avec datetime local
    Par alexj78 dans le forum Général Conception Web
    Réponses: 2
    Dernier message: 19/08/2014, 10h25
  3. [Débutant] Problème avec Datetime :/
    Par Genyuumaru dans le forum ASP.NET MVC
    Réponses: 7
    Dernier message: 03/10/2012, 11h53
  4. Problème avec dateTime
    Par ralf91 dans le forum Accès aux données
    Réponses: 9
    Dernier message: 29/06/2011, 14h40
  5. problême avec datetime
    Par Xanime dans le forum Services Web
    Réponses: 1
    Dernier message: 13/06/2007, 16h24

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