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

VB.NET Discussion :

Problème sur variable de type time [Débutant]


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 25
    Par défaut Problème sur variable de type time
    Bonjour , Dans mon projet j'affiche un tableau de temps mais sur des valeurs de plus de 24h j'ai une erreur avec les variable date ou datetime . Existe il une variable de temps pour plus de 24h ?
    exemple pour une valeur de 25H il me renvoie 1.1:00:00 ( cause une erreur) . pour info mes données sont dans une table mysql de type time (00:00:00)

  2. #2
    Membre Expert Avatar de jopopmk
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2011
    Messages
    1 856
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2011
    Messages : 1 856
    Par défaut
    Salut,

    pas franchement sûr de bien comprendre le besoin ou le mauvais comportement que tu rencontres. Il semblerait toutefois que ce que tu veux c'est pas un Time mais un TimeSpan. Maintenant je suis pas sûr du tout que tu puisses binder directement un Time MySQL vers un TimeSpan .NET. Si tu nous montrais ton code, ce que tu obtiens, que tu nous indiquais ce que représentent réellement ces données, peut-être qu'on comprendrait mieux.

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 25
    Par défaut
    En gros j'ai une table mysql avec une colonne de type time .
    la valeur du premier enregistrement est '35:00:00'
    j'aimerai le stocke dans une variable (dans Vb.net) ,sous la forme de 35H00 .
    je pense la mettre dans une variable de type date ou datetime mais j'ai l'erreur suivant
    System.InvalidCastException: La conversion de la chaîne "1.11:00:00" en type 'Date' n'est pas valide.

    Votre commentaire ma donne un debut de reponse. merci
    voici le code que je cherche
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
                    Dim duration As TimeSpan = TimeSpan.Parse(MonDataSetEnLocal.Tables("Horaire_Travail")(int_nombre_enregistement)(4).ToString) ' dans Mysql 35:00:00 en vb.net 1.11:00:00
                    Dim formatted As String = String.Format("{00:#00}H{1:00}", Math.Truncate(duration.TotalHours), duration.Minutes, duration.Seconds) ' renvoie 35H00

  4. #4
    Membre Expert Avatar de jopopmk
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2011
    Messages
    1 856
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2011
    Messages : 1 856
    Par défaut
    Re,

    en fait le format "35:00:00" tu le veux pour une question d'affichage et ton souci c'est juste la transformation ?
    Si oui alors tu étais sur la bonne piste et très proche de la solution.
    Voilà un code dans une méthode d'extension (c'est plus joli, plus sympa à utiliser, et peut-être un truc que tu connaissais pas) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Imports System.Runtime.CompilerServices
    Module TimeSpanExtensions
        <Extension()>
        Public Function ToNiceTime(ByVal timeVar As TimeSpan) As String
            Return Math.Truncate(timeVar.TotalHours).ToString("00") & ":" _
                  & timeVar.Minutes.ToString("00") & ":" _
                  & timeVar.Seconds.ToString("00")
        End Function
    End Module
    Pour l'utiliser tu as simplement à appeler cette méthode depuis un TimeSpan :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    ' Depuis un DataReader
    ' on imagine que mon DataReader est en cours de Read
    ' et mon champs de type Time est à l'indice 0
    Dim sts as String = myDataReader.GetTimeSpan(0).ToNiceTime()
    Bon dev.

    edit : ah oui ! je dis "juste pour l'affichage" car lors d'un insertion/modification un MySqlParameter de type MySqlDbType.Time fonctionne très bien avec comme source un TimeSpan .NET. Le coup du "1.11:00:00" c'est juste une représentation String comme une autre.

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 25
    Par défaut
    merci j'en prend note pour la suite de mon project

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 11/10/2010, 12h50
  2. Problème sur Variable globale
    Par diamonds dans le forum Langage
    Réponses: 1
    Dernier message: 16/03/2007, 10h52
  3. Problème sur Variable
    Par Jordmund dans le forum Access
    Réponses: 1
    Dernier message: 16/05/2006, 11h30
  4. Variable de type TIME
    Par Hervex dans le forum Langage
    Réponses: 1
    Dernier message: 30/01/2006, 11h47
  5. Comparaison sur variable de type Binary (32)
    Par krapno dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 26/10/2005, 12h48

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