[debutant C#] désire un petit coup de main..

Cyriusix Messages postés 11 Date d'inscription lundi 23 avril 2007 Statut Membre Dernière intervention 3 mai 2007 - 23 avril 2007 à 11:39
Cyriusix Messages postés 11 Date d'inscription lundi 23 avril 2007 Statut Membre Derniè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.

amicalement, Cyriusix.

7 réponses

Cyriusix Messages postés 11 Date d'inscription lundi 23 avril 2007 Statut Membre Dernière intervention 3 mai 2007
24 avril 2007 à 20:46
Aïe... n'y a-t-il vraiment personne qui puisse me donner un petit coup de main?
0
bloodi_eye Messages postés 12 Date d'inscription samedi 31 mars 2007 Statut Membre Dernière intervention 10 septembre 2007
25 avril 2007 à 20:19
Salut donne ton code source
0
Cyriusix Messages postés 11 Date d'inscription lundi 23 avril 2007 Statut Membre Derniè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;

namespace OpenDotNet3600
{

    public class ReleveMeteo
    {
        private string strLocation;
        private DateTime dtmTime;
        private double lfWind;
        private string strVisibility;
        private string strSkyConditions;
        private double lfTemperature;
        private double lfDewPoint;
        private double lfRelativeHumidity;
        private double lfPressure;
        private string strStatus;

        public ReleveMeteo()
        {
        }

        public ReleveMeteo(string _strLocation, DateTime _dtmTime, double _lfWind, string _strVisibility, string _strSkyConditions, double _lfTemperature, double _lfDewPoint, double _lfRelativeHumidity, double _lfPressure, string _strStatus)
        {
            strLocation = _strLocation;
            dtmTime = _dtmTime;
            lfWind = _lfWind;
            strVisibility = _strVisibility;
            strSkyConditions = _strSkyConditions;
            lfTemperature = _lfTemperature;
            lfDewPoint = _lfTemperature;
            lfRelativeHumidity = _lfRelativeHumidity;
            lfPressure = _lfPressure;
            strStatus = _strStatus;
        }
...
        public static ReleveMeteo LireDernierReleve()
        {

            //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();

                    if (drCurseur != null)
                        ReleveDateHeure.dtmTime = DateTime.Parse(Convert.ToString(drCurseur["rec_date"]).Substring(0, 10) + " " + Convert.ToString(drCurseur["rec_time"]).Substring(11, 8));

                    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?

Merci  encor..
0
rony4 Messages postés 2 Date d'inscription jeudi 26 avril 2007 Statut Membre Dernière intervention 26 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
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Cyriusix Messages postés 11 Date d'inscription lundi 23 avril 2007 Statut Membre Derniè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?
0
rony4 Messages postés 2 Date d'inscription jeudi 26 avril 2007 Statut Membre Dernière intervention 26 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?
0
Cyriusix Messages postés 11 Date d'inscription lundi 23 avril 2007 Statut Membre Dernière intervention 3 mai 2007
26 avril 2007 à 13:08
Merci pour la requête, je n'avais pas pensé à ca.. ;-)

pour le reste, je vais voir ce qui convient le mieu.
0
Rejoignez-nous