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

C# Discussion :

Le maximum date


Sujet :

C#

  1. #1
    Membre averti
    Femme Profil pro
    Inscrit en
    Septembre 2011
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Femme

    Informations forums :
    Inscription : Septembre 2011
    Messages : 19
    Par défaut Le maximum date
    bonjour,

    j'ai une table mesure ou g plusieur type de mesure avec les valeurs des mesures ainsi que les dates auquel elles on été faites et les endroits ou elles on été faites.
    j'aimerai récuperer dans 2 textbox la valeur et la date d'un certain type de mesure qui a été faite la plus récemment a un endroit en particulier.
    j'utilise cette fonction :

    Code c# : 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
     
    public void DateDerniereMe(string typeMe)
                {
                    oConn = new OdbcConnection(connStr);
     
                    try
                    {
                        oConn.Open();
     
                        OdbcCommand oComm = new OdbcCommand();
                        oComm.Connection = oConn;
                        //max
                        oComm.CommandText = "Select max(Me_date) as Me_date ,Me_valeur from mesure where mesure.Me_type='"+typeMe+"' and mesure.Me_nomCarto='"+g_oPoste.m_nomCarto+"'";
                        OdbcDataReader oReader = oComm.ExecuteReader(CommandBehavior.CloseConnection);
     
                        while (oReader.Read())
                        {
                            switch (typeMe)
                            {
                                case "Terre masses":
                                    tbMeValTerreMasse.Text = oReader[1].ToString();
                                    dtpValTerreMasse.Value = Convert.ToDateTime(oReader[0].ToString());
                                    break;
                                case "Terre du neutre":
                                    tbMeValTerreNeutre.Text = oReader[1].ToString();
                                    dtpValTerreNeutre.Value = Convert.ToDateTime(oReader[0].ToString());
                                    break;
                                case "Résistivité du sol":
                                    tbMeResistSol.Text = oReader[1].ToString();
                                    dtpResistSol.Value = Convert.ToDateTime(oReader[0].ToString());
                                    break;
                                case"Coefficient couplage":
                                    tbMeCoeffCouplage.Text = oReader[1].ToString();
                                    dtpCoeffCoupl.Value = Convert.ToDateTime(oReader[0].ToString());
                                    break;
                            }
                        }

    si aucun exemplaire du type de mesure n'existe pour l'endroit voulu dans ma table la compilation s'arrete et me met cette erreur :
    La chaîne n'a pas été reconnue en tant que DateTime valide.
    que puis-je faire pour remedier a ce probleme ?

    merci d'avance

  2. #2
    Membre Expert Avatar de Er3van
    Homme Profil pro
    Architecte Logiciel
    Inscrit en
    Avril 2008
    Messages
    1 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Architecte Logiciel
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2008
    Messages : 1 430
    Par défaut
    Des remarques :

    1/ Utilise des requêtes paramétrées, c'est plus propre et plus sûr.

    2/ Tes chaines de caractères (type de mesure) devraient plutôt être des variables static constantes, ou mieux : dans un fichier de ressource

    3/ Ce n'est certainement pas la compilation qui s'arrête, mais l'exécution

    Et pour ton problème, est-ce que ça répond à ton problème ?
    (Je n'ai pas compris le "aucun exemplaire du type de mesure n'existe pour l'endroit voulu dans ma table")

    Code C# : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    while (oReader.Read())
    {
        if( oReader[0] != null && oReader[1] != null) {
           switch (typeMe)
          { ... }
        }
    }

  3. #3
    Membre averti
    Femme Profil pro
    Inscrit en
    Septembre 2011
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Femme

    Informations forums :
    Inscription : Septembre 2011
    Messages : 19
    Par défaut
    Merci pour cette réponse rapide


    mais le test ne change rien j'ai toujours la meme erreur qui arréte l'exécution

    Citation Envoyé par Er3van Voir le message
    Et pour ton problème, est-ce que ça répond à ton problème ?
    (Je n'ai pas compris le "aucun exemplaire du type de mesure n'existe pour l'endroit voulu dans ma table")
    en fait je voulais dire que dans ma table le type de mesure demander n'existe pas parce que je n'en ai pas créer (comme si on avai pas fait de mesure pour avoir la resistivité du sol par exemple)

  4. #4
    Membre Expert Avatar de Guulh
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    2 160
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Septembre 2007
    Messages : 2 160
    Par défaut
    oReader est du type IDataReader.

    La bonne façon de récupérer une valeur d'un datareader, ce n'est pas de le convertir systématiquement en string comme tu le fais, mais d'appeler les méthodes GetXXX correspondantes au type voulu.

    ICi, tu veux une date: tu dois donc écrire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    dtpValTerreMasse.Value = oReader.GetDateTime(0);

  5. #5
    Membre averti
    Femme Profil pro
    Inscrit en
    Septembre 2011
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Femme

    Informations forums :
    Inscription : Septembre 2011
    Messages : 19
    Par défaut
    merci bcp pour ta reponse ! probleme résolu !!!


+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Maximum date trié par un attribut
    Par pindi dans le forum PostgreSQL
    Réponses: 3
    Dernier message: 19/08/2011, 16h51
  2. [CR XI] Maximum date + exclure
    Par ReiviloH dans le forum SAP Crystal Reports
    Réponses: 5
    Dernier message: 13/04/2010, 15h23
  3. [CR ?] Maximum date dans Crystal Reports
    Par Sylvie Kerfers dans le forum SAP Crystal Reports
    Réponses: 1
    Dernier message: 20/02/2008, 14h44
  4. récupérer ligne date maximum
    Par StIcK dans le forum Requêtes
    Réponses: 2
    Dernier message: 25/01/2006, 01h51
  5. Réponses: 8
    Dernier message: 05/05/2004, 12h30

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