Cyriusix
Messages postés11Date d'inscriptionlundi 23 avril 2007StatutMembreDernière intervention 3 mai 2007
-
23 avril 2007 à 11:39
Cyriusix
Messages postés11Date d'inscriptionlundi 23 avril 2007StatutMembreDernière intervention 3 mai 2007
-
26 avril 2007 à 13:08
Bonjours à tous,
je dois réaliser un service web en C# qui devrait générer un fichier
XML afin de fournir des informations à un client que je créerais plus
tard, et malheureusement pour moi, la tâche m'est un peu trop ardue,
moi qui suis un petit étudiant cherchant a faire des progrès en
programation... c'est pourquoi, je me suis dis que peut'être quelqu'un
ici pourait me donner un coup de main.
Concrétement, il s'agirait d'annalyser le code C# que j'ai déja réalisé et de me donner deux-trois petits trucs concernant les requêtes et méthodes que j'y ai fais, voir même m'aider dans mes démarches...
Si je ne l'affiche pas directement ici, c'est uniquement car il y a
plusieurs pages.. mais si vous le désirez, je pourai très bien le
faire..
Yaurait-il une personne disponnible à me donner un coup de main? Je lui en serais très très reconnaissant.
En éspèrant une réponse positive de l'un ou plusieurs d'entre vous, je vous salue.
Cyriusix
Messages postés11Date d'inscriptionlundi 23 avril 2007StatutMembreDernière intervention 3 mai 2007 26 avril 2007 à 08:12
Salut bloodi_eye, merci de ta réponse et voici une partie de mon code:
_______________________________________________________
using System;
using System.Collections.Generic;
using System.Text;
using System.Data.OleDb;
using System.Diagnostics;
using System.Xml;
//déclaration des variables globales
OleDbConnection connBD = null; // connexion sur la base de données
OleDbCommand commSQL; // commande SQL à exécuter sur la source de données
OleDbDataReader drCurseur; // Flux de lignes de données avant uniquement à partir d'une source de données
ReleveMeteo DernierReleve;
try
{
connBD = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + ("3600.mdb")); // création de la connexion sur la base de données
connBD.Open(); // Ouverture de la connexion
//Requete SQL à executer
commSQL = new OleDbCommand("SELECT Last(Data.rec_date) AS rec_date, Last(Data.rec_time) AS rec_time, Last(Data.temp_out) AS temp_out, Last(Data.dewpoint) AS dewpoint, Last(Data.rel_hum_out) AS rel_hum_out, Last(Data.windspeed) AS windspeed, Last(Data.abs_pressure) AS abs_pressure FROM Data;", connBD);
drCurseur = commSQL.ExecuteReader(); // Execute la requete
drCurseur.Read();
DernierReleve = new ReleveMeteo("Le Locle - CIFOM - Ecole Technique", DateTime.Parse(Convert.ToString(drCurseur["rec_date"]).Substring(0, 10) + " " + Convert.ToString(drCurseur["rec_time"]).Substring(11, 8)), Convert.ToDouble(drCurseur["windspeed"]), Convert.ToDouble(drCurseur["temp_out"]), Convert.ToDouble(drCurseur["dewpoint"]), Convert.ToDouble(drCurseur["rel_hum_out"]), Convert.ToDouble(drCurseur["abs_pressure"]));
connBD.Close();
return DernierReleve;
}
catch (Exception ex) //Gère les erreurs du Try
{
if ((int)connBD.State == 1) // Connexion ouverte?
connBD.Close(); // Fermeture de la connexion sur la source de donnée
Console.Write(ex); // Affichage de l'erreur
//Console.End(); // Arret du traitement de la page
return null;
}
}
public static ReleveMeteo LireReleveDateHeure(DateTime Date, DateTime Heure)
{
//déclaration des variables globales
OleDbConnection connBD = null; // connexion sur la base de données
OleDbCommand commSQL; // commande SQL à exécuter sur la source de données
OleDbDataReader drCurseur; // Flux de lignes de données avant uniquement à partir d'une source de données
ReleveMeteo ReleveDateHeure = new ReleveMeteo();
int i;
DateTime dtmTampHeure;
for (i = -5; i < 11; i++)
{
dtmTampHeure = Convert.ToDateTime(Convert.ToInt32(Heure.Hour) + i);
try
{
connBD = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + ("3600.mdb")); // création de la connexion sur la base de données
connBD.Open(); // Ouverture de la connexion
//Requete SQL à executer
commSQL = new OleDbCommand("SELECT Data.rec_date, Data.rec_time FROM Data WHERE (((Data.rec_date)=dtmDate) AND ((Data.rec_time)>dtmDate dtmHeure) AND ((Data.rec_time)<dtmDate dtmHeure));", connBD);
drCurseur = commSQL.ExecuteReader(); // Execute la requete
drCurseur.Read();
connBD.Close();
return ReleveDateHeure;
}
catch (Exception ex) //Gère les erreurs du Try
{
if ((int)connBD.State == 1) // Connexion ouverte?
connBD.Close(); // Fermeture de la connexion sur la source de donnée
Console.Write(ex); // Affichage de l'erreur
//Console.End(); // Arret du traitement de la page
return null;
}
}
}
....
___________________________________________________
voila déjà ca.. il s'agit en fait d'aller chercher des informations stockées dans la BD 3600.mbd, lesquelles viennent d'une petite station météo. Ces informations, sont triées par une ou plusieurs requêtes et pour l'instant, seule la méthode "LireDernierReleve" fonctionne. la secconde, LireReleveDateHeure, devrait prendre toutes les informations récoltées entre 2 dates et en faire des moyennes. Le problème est que les relevés de la station sont fait toutes les 10 minutes et donc si on dit une heure qui n'est pas correcte, il faudra aller chercher le relevé le plus près de cette heure.
Est-ce que c'est compréhensif? Penses-tu pouvoir m'aider et voudrais tu mon code complet avec la BD en .zip?
rony4
Messages postés2Date d'inscriptionjeudi 26 avril 2007StatutMembreDernière intervention26 avril 2007 26 avril 2007 à 09:40
qu'est ce que tu entend par "une heure n'est pas correcte"
Pourquoi tes méthodes sont static ??? Les méthodes statiques sont utilisés, en général, pour faire des calcul qui sont independant du comportement de l'objet. Peut-être as tu une idée derriere la tête?
A moins que tu ais un schema de conception bien définit qui t'obliges à procéder de la sorte,
tu devrais :
- enlever le modificateur static
- à la contruction de ton objet initialiser la connection à la base de donnée ce qui t'éviteras de réecrire à chaque ce code dans tes méthode
- ecride une méthode dispose pour fermer la connexion à la base de donnée
Au fait c'est bloodi_eye j'ai changé de pseudo
Vous n’avez pas trouvé la réponse que vous recherchez ?
Cyriusix
Messages postés11Date d'inscriptionlundi 23 avril 2007StatutMembreDernière intervention 3 mai 2007 26 avril 2007 à 09:58
alors ce que j'entend par une heure n'est pas correcte: Toutes les dix minutes, une information supplémentaire s'enregistre sur ma base de donnée. Cette information concerne la météo actuelle et ce classe dans la BD selon sa date et son heure d'enregistrement. Lorsque le client choisira l'heure a laquelle il désire voir le relevé, il y a de forte chance que cette heure ne soit pas repertoriée avec exactement les mêmes minutes demandées par le client. C'est pourquoi, il me faut faire une boucle qui ira chercher l'heure d'enregistrement la plus proche de l'heure choisie par le client, ce que je ne sais pas comment faire.. ;-)
Pour ce qui est des modificateur static, je comprend pas exactement ce que tu entends par "faire des calcul independant du comportement de l'objet".. Si je les enlèves, il faudrait que je les déclare quelque part non? et qu'est ce que ca apporterait a mon code?
rony4
Messages postés2Date d'inscriptionjeudi 26 avril 2007StatutMembreDernière intervention26 avril 2007 26 avril 2007 à 11:48
Ce n'est pas nécessaire de faire une boucle. Une requete du type
Select date
from table
where date <= aUneDate
order by date DESC
te retournera toutes de la table qui seront inférieures ou egales à aUneDate par ordre décroissant. Si aUneDate n'est pas enregistrée dans table c'est une date plus récente qui sortira en premier sinon c'est aUneDate.
le mot clé "static" permet de rendre un membre d'une classe indépendant de la vie d'un objet
Ainsi, en déclarant une varible static ou une methode static, tu n'a plus besoin d'instancier ta classe pour les utiliser.
Dans ton cas au lieu de faire :
ReleveMeteo obj = new ReleveMeteo(..)
obj.LireReleveDateHeure(...)
on fait :
ReleveMeteo.LireReleveDateHeure(...)
Est ce vraiment ce que tu veux?