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 :

Timeofday et DataGridView


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2014
    Messages
    39
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mars 2014
    Messages : 39
    Par défaut Timeofday et DataGridView
    Bonjour j'ai besoin de votre aide pour finaliser mon appli qui est un petit agenda avec alarmes.

    J'ai un label qui affiche l'heure actuelle (timeofday)
    J'ai un DataGridView qui est connecté à une base Access via TableAdapters
    Cela marche bien je peux ajouter des alarmes, les enregistrer ou les supprimer.

    Ce que voudrai c'est que quand mon label "timeofday" correspond à une heure enregistrée dans la base Access, une fenetre s'ouvre.

    Pour info J'ai donc:
    Un label qui affiche timeofday (lblcurtime)
    Une DataGridView (dgv1) avec un DataSet (AlarmeDataSet) et un TableAdapter (AlarmesTableAdapter)
    Une base Access (alarme.accdb) qui contient quatre colonnes, dans l'ordre : ID, NOM, HEURE, STATUT
    La colonne HEURE de la bd contient un type de données Date/Heure

    J'ai testé ce code mais sans succés dans un Timer_Tick:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    Dim i As Integer
    if ReminderTblDataGridView.Item(3, i).Value.ToString() = Format(Date.Now, "hh:mm:ss").ToString Then 
    Form2.Show()
    End If
    Merci de votre aide.

  2. #2
    Inactif  

    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2012
    Messages
    4 903
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2012
    Messages : 4 903
    Billets dans le blog
    36
    Par défaut
    Bonjour,


    Citation Envoyé par stevensavior Voir le message
    Bonjour j'ai besoin de votre aide pour finaliser mon appli qui est un petit agenda avec alarmes.

    J'ai un label qui affiche l'heure actuelle (timeofday)
    J'ai un DataGridView qui est connecté à une base Access via TableAdapters
    Cela marche bien je peux ajouter des alarmes, les enregistrer ou les supprimer.

    Ce que voudrai c'est que quand mon label "timeofday" correspond à une heure enregistrée dans la base Access, une fenetre s'ouvre.

    Pour info J'ai donc:
    Un label qui affiche timeofday (lblcurtime)
    Une DataGridView (dgv1) avec un DataSet (AlarmeDataSet) et un TableAdapter (AlarmesTableAdapter)
    Une base Access (alarme.accdb) qui contient quatre colonnes, dans l'ordre : ID, NOM, HEURE, STATUT
    La colonne HEURE de la bd contient un type de données Date/Heure

    J'ai testé ce code mais sans succés dans un Timer_Tick:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    Dim i As Integer
    if ReminderTblDataGridView.Item(3, i).Value.ToString() = Format(Date.Now, "hh:mm:ss").ToString Then 
    Form2.Show()
    End If
    Merci de votre aide.
    Je ne suis pas trop sûr de cette ligne:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if ReminderTblDataGridView.Item(3, i).Value.ToString() = Format(Date.Now, "hh:mm:ss").ToString Then
    Parce que ma compréhension de la chose est qu'il est impossible, ou presque) d'arriver à une stricte égalité.
    Now retourne une valeur de date qui contient la date et l'heure. Format sert seulement à l'affichage de l'heure sans changer la valeur du résultat de Now. Donc, sauf horreur de ma part, tu compares une chaîne de probablement 8 caractères (une heure) à une chaîne plus longue (une date et une heure).

    Je suis porté à penser que tu aurais plus de chance avec DateTime.TimeOfDay, qui retourne seulement une heure.

    Mais, je pense que tu devrais tester au pas-à-pas avec un espion pour la partie gauche et un espion pour la partie droite.

    Pour jouer avec les valeurs de dates et d'heures, il faut obligatoirement, ou presque, utiliser concurremment, DateTime() et TimeSpan().

  3. #3
    Membre averti
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2014
    Messages
    39
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mars 2014
    Messages : 39
    Par défaut
    Effectivement cette ligne était mauvaise car prise en exemple sur un autre site. En fonction du nom de mes composants elle aurait du être:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Dim i As Integer
    if dgv1.Item(3, i).Value.ToString() = Format(Date.Now, "hh:mm:ss").ToString Then 
    Form2.Show()
    End If
    Cela dit cela ne donne rien car elle est problablement erronée comme tu l'as fait remarquer.
    Mon but et de faire en sorte qu'un timer (Timer1) verifie chaque seconde que les alarmes enregistrée dans ma base access correspondent ou non à l'heure actuelle (timeofday), et si c'est le cas, cela ouvre une form.

    Il me manque cette partie du code qui va effectuer cette vérification dans la datagridview (dgv1).

    Je ne savais pas trop comment m'y prendre pour concevoir mon agenda, alors je suis parti sur la création d'une base access avec un tableadapter pour afficher les données dans un datagridview. Mais je suis totalement débutant dans ce domaine et j'aurais besoin de ton aide stp.

    Merci

  4. #4
    Modérateur
    Avatar de Sankasssss
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2006
    Messages
    1 842
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 842
    Par défaut
    Bonjour,

    Cela devrait mieux fonctionner avec quelque chose comme :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If dgv1.Item(3, i).Value.ToString() = Date.Now.ToString("HH:mm:ss") Then
    personnellement je serais parti dans l'autre sens. Plutôt que de vérifier moi même chaque seconde toutes les lignes d'alarme possible, j'aurais au lancement de l'application parcouru toutes les lignes et créer pour chaque alarme un timer. J'ai testé en vitesse et ça marche parfaitement :
    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
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    Public Class Form1
     
        Private colReveil As New List(Of Date)
     
        Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
            Debug.WriteLine("")
            rempliCol()
            initialiseTimers()
        End Sub
     
        Private Sub rempliCol()
            colReveil.Add(Now.AddSeconds(5))
            colReveil.Add(Now.AddSeconds(10))
            colReveil.Add(Now.AddSeconds(15))
            colReveil.Add(Now.AddMinutes(1))
            colReveil.Add(Now.AddMinutes(2))
            colReveil.Add(Now.AddMinutes(3))
            colReveil.Add(Now.AddMinutes(4))
            colReveil.Add(Now.AddMinutes(5))
            colReveil.Add(Now.AddMinutes(6))
            colReveil.Add(Now.AddMinutes(7))
            colReveil.Add(Now.AddMinutes(8))
            colReveil.Add(Now.AddMinutes(9))
     
            colReveil.Add(Now.AddMinutes(10))
            colReveil.Add(Now.AddMinutes(30))
            colReveil.Add(Now.AddMinutes(60))
            colReveil.Add(Now.AddDays(1))
        End Sub
     
        Private Sub initialiseTimers()
            For Each elem In colReveil
                Debug.WriteLine("")
                Debug.WriteLine("Réveil : " & elem.ToString("ddMMyyyy HHmmss"))
                Dim reste As TimeSpan = elem - Now
                Debug.WriteLine("today : " & Now.ToString("ddMMyyyy HHmmss"))
                Debug.WriteLine("reste : " & reste.TotalMilliseconds)
                If reste.TotalMilliseconds > 0 Then
                    Dim t As New Timer
                    t.Interval = reste.TotalMilliseconds
                    t.Tag = elem.ToString("ddMMyyyy HHmmss")
                    AddHandler t.Tick, AddressOf alarme
                    t.Start()
                End If
            Next
        End Sub
     
        Private Sub alarme(ByVal sender As Object, ByVal e As EventArgs)
            CType(sender, Timer).Stop()
            If CType(sender, Timer).Tag = Now.ToString("ddMMyyyy HHmmss") Then
                MsgBox("OK " & CType(sender, Timer).Tag & " vs " & Now.ToString("ddMMyyyy HHmmss"))
            Else
                MsgBox("!!! KO !!! " & CType(sender, Timer).Tag & " vs " & Now.ToString("ddMMyyyy HHmmss"))
            End If
        End Sub
     
    End Class
    Avantage, même si le PC est mis en veille, lors de la sortie de veille l'action du timer est déclenchée.

  5. #5
    Membre averti
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2014
    Messages
    39
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mars 2014
    Messages : 39
    Par défaut
    Merci je vais tester ca dès que possible et je vous tiens au jus.

Discussions similaires

  1. [c#] datagridview - trouver postion de la selection
    Par zeroox dans le forum Windows Forms
    Réponses: 7
    Dernier message: 15/04/2009, 12h48
  2. [VB.NET][DataGridView]:couleur de fond d'une cellule
    Par BigTicket42 dans le forum Windows Forms
    Réponses: 8
    Dernier message: 13/05/2008, 22h07
  3. Probleme d'affichage avec un DataGridView
    Par kekesilo dans le forum Windows Forms
    Réponses: 3
    Dernier message: 30/01/2007, 14h12
  4. [C#][DataGridView]Comment selectionner ligne sur Click Droit ?
    Par VincenzoR dans le forum Windows Forms
    Réponses: 12
    Dernier message: 23/12/2005, 22h34
  5. [VS2005][VB.Net] Custom Format dans un DataGridView
    Par Vonotar dans le forum VB.NET
    Réponses: 10
    Dernier message: 22/11/2005, 08h15

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