Recuperer données enrégistré les 10 dernières minutes [Résolu]

Signaler
Messages postés
15
Date d'inscription
mercredi 4 février 2009
Statut
Membre
Dernière intervention
23 mai 2012
-
cs_L0ci
Messages postés
224
Date d'inscription
vendredi 26 novembre 2010
Statut
Membre
Dernière intervention
11 juin 2013
-
bonjour, une fois de plus j'ai besoin de votre aide
voila mon problème est que j'aimerai récupérer toute les données enregistrées dans la base au cours des 10 dernière minute sql server et les afficher dans un GridView. En fait faire une sorte de boucle qui toute les 10 min récupère les données enregistrées pendant ce temps et les afficher dans mon GridView
et au cas ou aucune données n'est trouvé afficher un message d'erreur.
Mais je ne sais pas trop comment m'y prendre .

toute réponse sera la bienvenue

14 réponses

Messages postés
224
Date d'inscription
vendredi 26 novembre 2010
Statut
Membre
Dernière intervention
11 juin 2013
2
Je ne vais pas pouvoir te donner une réponse très précise car je ne sais pas comment tu te connectes a ta base de données. Mais en gros tu vas avoir quelque chose comme:
       System.Windows.Forms.Timer t1 = new System.Windows.Forms.Timer();
       t1.Interval = 10000;
       t1.Tick += new EventHandler(t1_Tick);
       t1.Start();

et l’évènement:
void t1_Tick(object sender, EventArgs e)
{
  //Requete vers la base de données
  String requete = "SELECT * FROM table WHERE date > " + DateTime.Now.Subtract(TimeSpan.FromMinutes(10));
 //Affichage dans la gridview
}

A toi d'adapter la requête à ton code.

Bonne chance
Messages postés
224
Date d'inscription
vendredi 26 novembre 2010
Statut
Membre
Dernière intervention
11 juin 2013
2
Hum, essaie voir avec ca:
query = ("SELECT * FROM [marine.meteo]WHERE HeureMeteo > '" + heure2.Subtract(System.TimeSpan.FromMinutes(10)) + "'");
Messages postés
224
Date d'inscription
vendredi 26 novembre 2010
Statut
Membre
Dernière intervention
11 juin 2013
2
Bonjour,
Tu peux simplement utiliser un timer qui, toutes les 10 min, va faire une requête sur ta table. Tu n'as plus qu'a récupérer tout les enregistrements où:
datetime > DateTime.Now.Subtract(TimeSpan.FromMinutes(10));

Apres ça plus qu'a tout mettre dans ta gridview et ça marche
Messages postés
15
Date d'inscription
mercredi 4 février 2009
Statut
Membre
Dernière intervention
23 mai 2012

Je te remercie pour ta réponse mais je ne sais pas trop comment le faire
cette ligne que tu as donnée je dois l'introduire dans ma requête ?
Je débute en C# ne tiens pas trop rigueur de mon ignorance.
je vais me documenter sur le fonctionnement du timer pour pouvoir l'utiliser
Messages postés
15
Date d'inscription
mercredi 4 février 2009
Statut
Membre
Dernière intervention
23 mai 2012

voila j'ai adapter le code du moins j'ai essayer de l'adapter
protected void ButtonReel_Click(object sender, EventArgs e)
        {
           GridViewMois.Visible = true;            
           System.Windows.Forms.Timer t1 = new System.Windows.Forms.Timer();
           t1.Interval = 10000;
           t1.Tick += new EventHandler(t1_Tick);
           t1.Start();
        }


void t1_Tick(object sender, EventArgs e)
        {
            connection = new SqlConnection("Data Source=etcccc")

            query = ("SELECT * FROM [marine.meteo] WHERE HeureMeteo  > " + DateTime.Now.Subtract(System.TimeSpan.FromMinutes(10)));

            command = new SqlCommand(query, connection); 
            connection.Open();
            reader = command.ExecuteReader();
            while (reader.Read())
            {
                GridViewMois.DataSource = reader;
                GridViewMois.DataBind();
            }
            connection.Close();
            
        }


Mais lorsque je met un point d'arrêt j'ai l’impression que ça n'entre pas dans le méthode t1_Tick mais je n'ai aucune erreur
et aucune donnée dans mon GridView
Messages postés
224
Date d'inscription
vendredi 26 novembre 2010
Statut
Membre
Dernière intervention
11 juin 2013
2
As-tu essayé de diminuer l’interval du timer? Si non met le a 100 et relance l'appli avec ton point d’arrêt tu sera fixé.
Si ça ne rentre pas dans t1_Tick essaye de réécrire le ligne t1.Tick += ... en utilisant l’auto-complétion (touche tab).

Bonne chance
Messages postés
15
Date d'inscription
mercredi 4 février 2009
Statut
Membre
Dernière intervention
23 mai 2012

voila j'ai tout supprimer et ajouter un composant Timer et ainsi tout réécris
donc maintenant le programme entre bien dans l'event Timer_Tick mais
maintenant j'ai une erreur :

System.Data.SqlClient.SqlException: Syntaxe incorrecte vers '17'.
Messages postés
224
Date d'inscription
vendredi 26 novembre 2010
Statut
Membre
Dernière intervention
11 juin 2013
2
Bon déjà on a avancé :). Pour la query essaie d'en faire une toute simple
SELECT * FROM [marine.meteo]
pour voir si c'est ton where qui ne va pas. Il faut bien faire attention a la différence de format entre ta colonne HeureMeteo et un datetime. Quel est le type de ta colonne?
Messages postés
15
Date d'inscription
mercredi 4 février 2009
Statut
Membre
Dernière intervention
23 mai 2012

le problème vient bel et bien du where car avec juste avec
SELECT * FROM [marine.meteo]

ça fonctionne très bien
le type de colonne dans le heure méteo est de type Time et les données qui sont stockées sont en format '16:46:51.0000000'
Messages postés
15
Date d'inscription
mercredi 4 février 2009
Statut
Membre
Dernière intervention
23 mai 2012

j'ai une autre colonne DateMeteo qui elle stock les dates
car je devais mettre la date et l'heure dans deux tables différentes

désolé pour le double post je trouve pas la fonction Edit
Messages postés
224
Date d'inscription
vendredi 26 novembre 2010
Statut
Membre
Dernière intervention
11 juin 2013
2
Il faut donc trouver comment tu peux comparer tes champs date et heure avec le datetime. Regarde du coté de la fonction format de la dateTime Ici.
Bon travail
Messages postés
15
Date d'inscription
mercredi 4 février 2009
Statut
Membre
Dernière intervention
23 mai 2012

c'est ce que j'ai fais et donc j'ai ceci comme code
DateTime Heure = DateTime.Now;
          //  string heure2 = Convert.ToString(Heure.TimeOfDay);
            System.TimeSpan heure2 = Heure.TimeOfDay;
                     
            connection = new SqlConnection("Data Source=192.168.146.128;Initial Catalog=BDD_Marine;User ID=sa;Password=BTSbts2");

            query = ("SELECT * FROM [marine.meteo]WHERE HeureMeteo > " + heure2.Subtract(System.TimeSpan.FromMinutes(10)));
            
            command = new SqlCommand(query, connection); //exécution de la requete et de la connexion
            connection.Open();//ouverture de la connection
            reader = command.ExecuteReader();
            while (reader.Read())
            {
                GridViewMois.DataSource = reader;
                GridViewMois.DataBind();           }
                       connection.Close();
           
        }

        }


et donc j'ai bien un code du genre pour query
query"SELECT * FROM [marine.meteo]WHERE HeureMeteo > 20:50:04.9677577"


donc le format et bien celui que je recherche mais j'ai une erreur vers ':'
donc les deux points qui séparent mon heure alors que c'est bien le même format que celui de Heure metéo
Messages postés
15
Date d'inscription
mercredi 4 février 2009
Statut
Membre
Dernière intervention
23 mai 2012

je te remercie beaucoup j'ai réussi avec une autre méthode un peu compliqué juste avant
mais la tienne est vraiment plus simple
je dis Chapeau a toi et d'avoir donnée de ton temps :)

juste en passant puisque c'est toute les 10 min que je vais récupérer les données dans la base est il possible d'afficher un décompte du genre
"X Nombre de Minute "
et décompter X jusqu'au rafraichissement
Messages postés
224
Date d'inscription
vendredi 26 novembre 2010
Statut
Membre
Dernière intervention
11 juin 2013
2
Nickel. Content que ça marche et bonne continuation