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

roussel20 15 Messages postés mercredi 4 février 2009Date d'inscription 23 mai 2012 Dernière intervention - 18 avril 2012 à 15:05 - Dernière réponse : cs_L0ci 224 Messages postés vendredi 26 novembre 2010Date d'inscription 11 juin 2013 Dernière intervention
- 18 avril 2012 à 21:46
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
Afficher la suite 

Votre réponse

14 réponses

Meilleure réponse
cs_L0ci 224 Messages postés vendredi 26 novembre 2010Date d'inscription 11 juin 2013 Dernière intervention - 18 avril 2012 à 15:59
3
Merci
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

Merci cs_L0ci 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 124 internautes ce mois-ci

Commenter la réponse de cs_L0ci
Meilleure réponse
cs_L0ci 224 Messages postés vendredi 26 novembre 2010Date d'inscription 11 juin 2013 Dernière intervention - 18 avril 2012 à 21:32
3
Merci
Hum, essaie voir avec ca:
query = ("SELECT * FROM [marine.meteo]WHERE HeureMeteo > '" + heure2.Subtract(System.TimeSpan.FromMinutes(10)) + "'");

Merci cs_L0ci 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 124 internautes ce mois-ci

Commenter la réponse de cs_L0ci
cs_L0ci 224 Messages postés vendredi 26 novembre 2010Date d'inscription 11 juin 2013 Dernière intervention - 18 avril 2012 à 15:19
0
Merci
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
Commenter la réponse de cs_L0ci
roussel20 15 Messages postés mercredi 4 février 2009Date d'inscription 23 mai 2012 Dernière intervention - 18 avril 2012 à 15:49
0
Merci
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
Commenter la réponse de roussel20
roussel20 15 Messages postés mercredi 4 février 2009Date d'inscription 23 mai 2012 Dernière intervention - 18 avril 2012 à 17:00
0
Merci
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
Commenter la réponse de roussel20
cs_L0ci 224 Messages postés vendredi 26 novembre 2010Date d'inscription 11 juin 2013 Dernière intervention - 18 avril 2012 à 17:05
0
Merci
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
Commenter la réponse de cs_L0ci
roussel20 15 Messages postés mercredi 4 février 2009Date d'inscription 23 mai 2012 Dernière intervention - 18 avril 2012 à 17:38
0
Merci
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'.
Commenter la réponse de roussel20
cs_L0ci 224 Messages postés vendredi 26 novembre 2010Date d'inscription 11 juin 2013 Dernière intervention - 18 avril 2012 à 18:19
0
Merci
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?
Commenter la réponse de cs_L0ci
roussel20 15 Messages postés mercredi 4 février 2009Date d'inscription 23 mai 2012 Dernière intervention - 18 avril 2012 à 18:40
0
Merci
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'
Commenter la réponse de roussel20
roussel20 15 Messages postés mercredi 4 février 2009Date d'inscription 23 mai 2012 Dernière intervention - 18 avril 2012 à 18:50
0
Merci
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
Commenter la réponse de roussel20
cs_L0ci 224 Messages postés vendredi 26 novembre 2010Date d'inscription 11 juin 2013 Dernière intervention - 18 avril 2012 à 20:08
0
Merci
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
Commenter la réponse de cs_L0ci
roussel20 15 Messages postés mercredi 4 février 2009Date d'inscription 23 mai 2012 Dernière intervention - 18 avril 2012 à 21:06
0
Merci
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
Commenter la réponse de roussel20
roussel20 15 Messages postés mercredi 4 février 2009Date d'inscription 23 mai 2012 Dernière intervention - 18 avril 2012 à 21:42
0
Merci
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
Commenter la réponse de roussel20
cs_L0ci 224 Messages postés vendredi 26 novembre 2010Date d'inscription 11 juin 2013 Dernière intervention - 18 avril 2012 à 21:46
0
Merci
Nickel. Content que ça marche et bonne continuation
Commenter la réponse de cs_L0ci

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.