cs_megamario
Messages postés145Date d'inscriptionlundi 15 juin 2009StatutMembreDernière intervention14 février 2013
-
25 juin 2010 à 09:17
cs_megamario
Messages postés145Date d'inscriptionlundi 15 juin 2009StatutMembreDernière intervention14 février 2013
-
25 juin 2010 à 14:56
Bonjour,
Je dois modifier un programme qui est en VB6.
J'ai une manipulation de Date et heure à faire
Voici un exemple:Je dois récupérer des données d'une supervision. Dans un 1er temps j'interroge les registres du système il me revoie sous forme d'une chaine, le nom de la mesure, l'unité de la mesures, le nombre de données dans le registre et la période d'échantillonnage.
La période d'échantillonnage représente par exemple 10 minutes.
Ensuite je récupère les données du registre sous forme de chaine codé en exa de 16Bits séparé par des / dont les deux premières données sont: 1er bloc, le jour le mois et l'année, 2éme bloc l'heure minute seconde.
Pour le moment j'arrive à mettre ça sous la forme string "jj/MM/aaaa hh:mm:ss"
Ensuite il y a toutes les données donc je dois ajouter la période d'échantillonnage a chaque mesure pour formater la ligne:jj/MM/aaaa hh:mm:ss;LaDonnée
Il arrive que les données dans le système ne soient plus enregistrées donc au redémarrage de l'enregistrement, les deux premières lignes sont réécrite avec la nouvelle date et heure. Il faut que je compare cette nouvelle date avec la dernière enregistrée. Pour faire mon traitement entre l'arrêt et la reprise (Mise à 0 des mesures par exemple)
J'essaie pour le moment avec l'Objet "Date" mais on m'a parlé de "DTPicker" mais je ne vois qu'un contrôle graphique.
Enfin si vous avez des infos pour la manipulation de Date et Heures. De mon côté je continue à chercher, car je suis bloqué là-dessus pour le moment
Merci de votre éventuelle aide ou redirection vers des sites pouvant m'aider. J'en ai déjà trouvé mais pas forcement utile pour moi.
Adn56
Messages postés1172Date d'inscriptionjeudi 24 mai 2007StatutMembreDernière intervention28 septembre 20131 25 juin 2010 à 09:55
salut, dateTimePicker est comme son nom l'indique un control graphique pour la selection d'une date et/ou d'une heure, donc pas spécialement utilse pour toi. De toute façon il retournera un objet date.
regarde dans les propriétées de DATE, il y de quoi calculer des delta de temps, mise en forme (format) etc...
Pour ta gestion de donnée je ferais une petite class ou au moins un tableau (date,string ou double) plutot que de passer par un Date.tostring & données.tostring. Plus simple pour les envoyer directement sur une listView, ou vers un CSV pour export.
Ex :
<Serializable()> Public Class Hmi
Public lignes As New List(Of hmi_ligne) 'déclare et intancie (new) la list des lignes de data
public sub save(), load(), ToCsv(), TolistView() etc....
'et par exemple pour ton besoin sur les dates :
'----------------------------------------------------------------------
' Function qui retourne le nb de jour depuis la premiére date saisie
'----------------------------------------------------------------------
Public Function Nb_jour() As String
If Me.lignes.Count = 0 Then Return "0" : Exit Function
Dim Deb_date As Date = Me.lignes.Item(Me.lignes.Count - 1).L_date
Dim interval As TimeSpan = Date.Now.Subtract(Deb_date) 'différence en jours
Return CType(interval.TotalDays, Integer).ToString
End Function
End Class '
<Serializable()> Public Class hmi_ligne
Public L_ID As String 'index des lignes
Public L_date As Date ' la date de l'opération
Public L_données As String ou double
End class
cs_Jack
Messages postés14006Date d'inscriptionsamedi 29 décembre 2001StatutModérateurDernière intervention28 août 201579 25 juin 2010 à 10:04
Salut
Le code fourni par adn56 ne semble pas être du VB6 mais du VB.Net.
Pour les manipulations de date (je n'ai pas trop compris ce que tu as à faire), il y a :
DateDiff qui te calculera une différence entre deux dates en année, mois, jour, heure, minutes OU secondes
DateAdd qui te permettra de récupérer une date à partir d'une autre date auquel tu pourras ajouter ou soustraire un nombre d'année, mois, jour, heure, minutes OU de secondes
Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés
Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
cs_megamario
Messages postés145Date d'inscriptionlundi 15 juin 2009StatutMembreDernière intervention14 février 2013 25 juin 2010 à 14:56
Bonjour à tous et merci.
Je ne vous est pas répondu rapidement car cela viens de changer pour le jour mois année.
Maintenant la chaine contenant le jour le mois est l'année est remplacé par le nombre de jour depuis le 01/01/2000 (date d'initialisation de la supervision).
Pour le moment je m'occupe de l'affichage sur la page pour vérifier que je décompose bien m'a trame, j'ai presque fini.
Dans le principe imaginer que:
J'ai une commande qui me renvoie:
Le nom de la mesure/L'unité/le diviseur/la fréquence de pooling
C'est avec cette fréquence de pooling que je vais déduire l'heure et la date de mes mesures, pour l'exemple on va dire 10 pour 10 minutes entre chaque mesures
Dans la commande pour récupérer les données:
j'ai une entête avec 2 ligne:
La date
L'heure
Puis les données
Mais il arrive que le système n'a rien à enregistrer et à la reprise il remet l'entête avec la nouvelle date et heures puis les données
ce qui donne:
Date/Heure/Donnée/Donnée/Donnée/Donnée/Donnée/Donnée/Donnée/Donnée/Donnée/Date/Heure/Donnée/Donnée/Donnée etc..
Ici on va dire que la date et l'heure est:
01/01/2010 08:00:00
Et moi je dois le mettre sous la forme
01/01/2010 08:00:00;ladonnée
01/01/2010 08:10:00;ladonnée
01/01/2010 08:20:00;ladonnée
01/01/2010 08:30:00;ladonnée
01/01/2010 08:40:00;ladonnée
01/01/2010 08:50:00;ladonnée
01/01/2010 09:00:00;ladonnée
01/01/2010 09:10:00;ladonnée
01/01/2010 09:20:00;ladonnée <-Dernière mesure avant lecture d'une nouvelle date
01/01/2010 09:30:00;0 <-Mise à 0 de la donnée à la date suivante de la (dernière date + les 10 minutes)avant la lecture de la nouvelle date.
02/01/2010 06:50:00;0 <-Mise à 0 de la donnée date précédente de la nouvelle heure
02/01/2010 07:00:00:Ladonnée <-Démarrage avec la nouvelle heures
02/01/2010 07:10:00:Ladonnée
etc...
Le but ce sa et de faire des courbes de cette mesures et lorsqu'il y a rien de mesuré on met 0. Et cela évite de surcharger la mémoire du système et surtout les temps de transferts qui seront par GSM.