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 :

Recupération de données et utilisation


Sujet :

VB.NET

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2013
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2013
    Messages : 10
    Points : 6
    Points
    6
    Par défaut Recupération de données et utilisation
    Bonjour a tous !
    Tout d’abord désolé si ce sujet a déjà était aborder je n'ai pas trouver quelque chose qui correspondais vraiment à mon besoin.
    j'explique mon problème

    J'ai une base de donnée Access relier à mon logiciel de stats VB.net

    Mon but est de récupérer les données de la bdd et de les afficher en graphique avec les charts, jusqu'ici tout va bien.
    Mon problème est dans une colonne (Durée_Moyenne) de ma bdd :
    son format est stocker sous cette forme :

    2-03:55:30
    jour-heure:minutes:secondes

    sauf que impossible de générer des stats avec ce type de format

    Alors je pensais récupérer avec un SELECT le contenu de ma colonne, le stocker dans un tableau et faire mes traitements dessus( transformer tout ça en minutes ou heure)
    Le problème est que je ne sais pas trop comment m'y prendre

    Merci d'avance

  2. #2
    Modérateur
    Avatar de DotNetMatt
    Homme Profil pro
    CTO
    Inscrit en
    Février 2010
    Messages
    3 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : CTO
    Secteur : Finance

    Informations forums :
    Inscription : Février 2010
    Messages : 3 611
    Points : 9 743
    Points
    9 743
    Billets dans le blog
    3
    Par défaut
    Déjà la première question à se poser c'est pourquoi avoir fait le choix stupide de stocker cette info sous ce format ?

    Il aurait mieux valu choisir une de ces deux options :
    - Stocker la date et l'heure de début dans une colonne Date/Time, ainsi que la date et l'heure de fin dans une seconde colonne Date/Time.
    - Stocker une seule colonne Date/Time qui prendrait pour valeur de référence DateTime.MinValue. La différence entre DateTime.MinValue et la valeur stockée te donnerait la durée de l'opération.

    Là, tu vas devoir t'embarquer dans du bricolage pour reconstruire tes données via du parsing.
    Less Is More
    Pensez à utiliser les boutons , et les balises code
    Desole pour l'absence d'accents, clavier US oblige
    Celui qui pense qu'un professionnel coute cher n'a aucune idee de ce que peut lui couter un incompetent.

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2013
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2013
    Messages : 10
    Points : 6
    Points
    6
    Par défaut
    Je sais bien que le format est pas genial ( merdique ^^) mais c'est un collegue qui m'envoi les données donc moi je peu pas y toucher avant envoi, mais je peu lui demander.
    En partant du principe que ce n'est pas possible de modifier le format,
    peut tu m'en dire plus sur le parsing et comment m'y prendre?

    Merci pour ta réponse rapide

  4. #4
    Modérateur
    Avatar de DotNetMatt
    Homme Profil pro
    CTO
    Inscrit en
    Février 2010
    Messages
    3 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : CTO
    Secteur : Finance

    Informations forums :
    Inscription : Février 2010
    Messages : 3 611
    Points : 9 743
    Points
    9 743
    Billets dans le blog
    3
    Par défaut
    Dommage que tu ne puisses pas toucher au format, ça aurait été plus propre

    Le parsing c'est assez simple, il faut utiliser les fonctions liées au type String (Substring ou Split par exemple). Ensuite il faut convertir dans le bon format. Voici un exemple :
    Code VB.NET : 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
    Dim initialString = "2-03:55:30"
     
    Dim initialStringSplitted = initialString.Split("-"C)
    If initialStringSplitted.Any() Then    ' On vérifie qu'on a bien récupéré des valeurs
    	Dim timeValue = New DateTime()    ' Stocke l'heure
    	Dim daysInt = -1                  ' Stocke le nombre de jours
     
            ' On essaie de parser le nombre de jours pour le convertir en Int32
    	If Not Int32.TryParse(initialStringSplitted(0), daysInt) Then
    		Throw New Exception("Unable to parse the number of days")
    	End If
     
            ' On essaie de parser l'heure pour la convertir en DateTime
    	If Not DateTime.TryParse(initialStringSplitted(1), timeValue) Then
    		Throw New Exception("Unable to parse the time value")
    	End If
    End If
    Ensuite il suffit de manipuler timeValue et daysInt.

    A noter que timeValue sera la date du jour + l'heure qui vient de ton string récupéré en base de données. Pour tes traitements suivants, il suffira juste d'ignorer la partie date.
    Less Is More
    Pensez à utiliser les boutons , et les balises code
    Desole pour l'absence d'accents, clavier US oblige
    Celui qui pense qu'un professionnel coute cher n'a aucune idee de ce que peut lui couter un incompetent.

  5. #5
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2013
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2013
    Messages : 10
    Points : 6
    Points
    6
    Par défaut
    En fait je doit convertir aussi la journée
    Pour être plus explicite je vais essayer d'être plus clair
    Les stats que je traite correspondent au appels d'une hotline
    je reçois des données tel que Nbre_appel_total ...
    certaines personnes ont plus d'une journée en durée d'appel
    d'ou le jj-hh-mm-ss

    Donc mon but est de transformer la totalité en heure
    J'ai comprit que je doit parser quand même

    Si j'ai bien compris je doit récupérer ma colonne,
    parser mes données et les stocker dans des variables :

    int jour = jour x24
    int heure = heure
    int minute = /60
    int seconde = /3600

    Additionner tout ça pour avoir ma durée totale

    Juste une dernière petite question après je vous embête plus (j’espère)

    Dans quoi je devrai récupérer les données de ma colonne ?
    je les récupères dans un DataGridView
    Je doit faire une requête SELECT pour les mettre dans un tableau ? ( si oui comment ?)
    ou je peu interagir avec mes données depuis le datagridview

  6. #6
    Modérateur
    Avatar de DotNetMatt
    Homme Profil pro
    CTO
    Inscrit en
    Février 2010
    Messages
    3 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : CTO
    Secteur : Finance

    Informations forums :
    Inscription : Février 2010
    Messages : 3 611
    Points : 9 743
    Points
    9 743
    Billets dans le blog
    3
    Par défaut
    Ca dépend comment est-ce que tu binde ton DataGridView. En principe tu dois lui passer une liste d'objets métier (qui proviennent de ta couche Business (BLL)). Il suffit de rajouter une propriété à ton objet métier pour pouvoir y stocker tes valeurs.
    Less Is More
    Pensez à utiliser les boutons , et les balises code
    Desole pour l'absence d'accents, clavier US oblige
    Celui qui pense qu'un professionnel coute cher n'a aucune idee de ce que peut lui couter un incompetent.

  7. #7
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2013
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2013
    Messages : 10
    Points : 6
    Points
    6
    Par défaut
    DataGridview1.Datasource = access(requete).table(0)

    access étant une méthode de mon module CAD

  8. #8
    Modérateur
    Avatar de DotNetMatt
    Homme Profil pro
    CTO
    Inscrit en
    Février 2010
    Messages
    3 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : CTO
    Secteur : Finance

    Informations forums :
    Inscription : Février 2010
    Messages : 3 611
    Points : 9 743
    Points
    9 743
    Billets dans le blog
    3
    Par défaut
    Ah ok, dans ce cas soit tu mets à jour ton dataset directement, soit tu déportes le parsing dans la requête SQL, mais je te déconseille plutôt de faire ça, car c'est plutôt le rôle de l'appli de gérer ça...
    Less Is More
    Pensez à utiliser les boutons , et les balises code
    Desole pour l'absence d'accents, clavier US oblige
    Celui qui pense qu'un professionnel coute cher n'a aucune idee de ce que peut lui couter un incompetent.

  9. #9
    Expert confirmé
    Avatar de Kropernic
    Homme Profil pro
    Analyste / Programmeur / DBA
    Inscrit en
    Juillet 2006
    Messages
    3 932
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Belgique

    Informations professionnelles :
    Activité : Analyste / Programmeur / DBA
    Secteur : Distribution

    Informations forums :
    Inscription : Juillet 2006
    Messages : 3 932
    Points : 4 239
    Points
    4 239
    Par défaut
    Citation Envoyé par DotNetMatt Voir le message
    Ah ok, dans ce cas soit tu mets à jour ton dataset directement, soit tu déportes le parsing dans la requête SQL, mais je te déconseille plutôt de faire ça, car c'est plutôt le rôle de l'appli de gérer ça...
    Hello Matt ^^.

    Tu crois vraiment que c'est le rôle de l'application de gérer cela ? Personnellement, j'aurais dit l'inverse.

    Bon ok, c'est une DB Access si j'ai bien suivi donc j'suis pas très à jour de ce qu'elle peut faire mais si je devais faire pareil chez moi avec SQL Server, je n'hésite pas une seule seconde et je fais ça directement sur le serveur.

    Mon raisonnement :
    Il veut savoir le nombre total d'heures passées au téléphone, il doit donc demander cela à la DB.
    Un peu comme quand, pour une personne, on veut savoir son âge. On demande son âge à la DB, pas sa date de naissance. Non ?
    En plus, je suis quasiment certain que le traitement sera plus rapide à faire faire par le SGDBR (mais quid de access?) et si la DB n'est pas directement sur la machine cliente, il y a aura moins d'octets à faire transiter sur le réseau. Que des avantages donc.

    Qu'en penses-tu ?
    Kropernic

  10. #10
    Modérateur
    Avatar de DotNetMatt
    Homme Profil pro
    CTO
    Inscrit en
    Février 2010
    Messages
    3 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : CTO
    Secteur : Finance

    Informations forums :
    Inscription : Février 2010
    Messages : 3 611
    Points : 9 743
    Points
    9 743
    Billets dans le blog
    3
    Par défaut
    Salut Kropernic,

    Oui je le crois vraiment dans sa situation. Mon jugement aurait été tout autre si les données étaient stockées dans le bon format

    Les SGBDR ne sont pas optimisés pour faire des traitements unitaires de ce type. Ils sont plutôt faits pour traiter des ensembles de données.

    Ceci dit, sur un faible volume de données, ça ne sera pas forcément très pénalisant, mais sur une volumétrie conséquente, ça peut avoir des impacts.
    Less Is More
    Pensez à utiliser les boutons , et les balises code
    Desole pour l'absence d'accents, clavier US oblige
    Celui qui pense qu'un professionnel coute cher n'a aucune idee de ce que peut lui couter un incompetent.

  11. #11
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2013
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2013
    Messages : 10
    Points : 6
    Points
    6
    Par défaut
    Merci pour tout ! mon problème est résolu

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 09/06/2010, 14h11
  2. Réponses: 2
    Dernier message: 18/05/2010, 11h31
  3. Réponses: 2
    Dernier message: 20/01/2005, 15h19
  4. [MFC]Recupération de donnée et conversion
    Par Guilhem dans le forum MFC
    Réponses: 8
    Dernier message: 16/06/2004, 10h36
  5. [Indy TCPClient] Recupérer le données reçues
    Par fandor7 dans le forum Web & réseau
    Réponses: 8
    Dernier message: 29/06/2003, 21h52

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