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 :

OracleException not a valid month


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Informaticien
    Inscrit en
    Mai 2011
    Messages
    40
    Détails du profil
    Informations professionnelles :
    Activité : Informaticien
    Secteur : Enseignement

    Informations forums :
    Inscription : Mai 2011
    Messages : 40
    Par défaut OracleException not a valid month
    Bonjour
    j'utilise un DateTimePicker pour recuper une date et je veut recuper des information avec cette date dans une base Oracl :
    Code : 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
     
    public List<Int32> getNumerosEntetes(DateTime date, string idBanque)
            {
                List<Int32> numero = new List<int>();
                string dateText = date.ToString("dd/MM/yyyy");
                using (DbConnection Cnx = ConnexionFactory.Instance.getConnexion())
                {
                    using (DbCommand Cmd = Cnx.CreateCommand())
                    {
                        Cmd.CommandText = "select  numero_entete,code_banque_source from clr_fichier where date_traitement='" + dateText + "' and code_banque_source='" + idBanque + "'  ";
                        DbDataReader reader = Cmd.ExecuteReader();
                       if (reader.HasRows==false)
                        {
                            numero = null;
                        }
                        else
                        {
                            while (reader.Read())
                            {
     
                                numero.Add(Int32.Parse(reader["numero_entete"].ToString()));
     
                            }
     
                        }
                    }
     
                }
     
                return numero;
     
            }
    Ici c'est la valeur du DateTimePicker qui est passée en paramètre mais je me retrouve avec cette exception:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    System.Data.OracleClient.OracleException (0x80131938): ORA-01843: not a valid month
     
       à System.Data.OracleClient.OracleConnection.CheckError(OciErrorHandle errorHandle, Int32 rc)
       à System.Data.OracleClient.OracleDataReader.ReadInternal()
       à System.Data.OracleClient.OracleDataReader.Read()
    et pourtant ma requête ressemble a ça
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    select  numero_entete,code_banque_source from clr_fichier where date_traitement='14/09/2012' and code_banque_source='56'
    quand je débogue.
    Please Help!!!

  2. #2
    Membre Expert
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2009
    Messages
    2 056
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Novembre 2009
    Messages : 2 056
    Par défaut
    Utilise une requete paramétré c'est toujours mieux.
    Peut etre que c'est un problème de culture, toi tu rentres du FR, lui attend de EN...

  3. #3
    Membre averti
    Informaticien
    Inscrit en
    Mai 2011
    Messages
    40
    Détails du profil
    Informations professionnelles :
    Activité : Informaticien
    Secteur : Enseignement

    Informations forums :
    Inscription : Mai 2011
    Messages : 40
    Par défaut
    Citation Envoyé par micka132 Voir le message
    Utilise une requete paramétré c'est toujours mieux.
    Peut etre que c'est un problème de culture, toi tu rentres du FR, lui attend de EN...
    Ban merci pour ton post mais suis vraiment un débutant et nul comment on écrit une requête paramétrée?

  4. #4
    Membre éprouvé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2011
    Messages
    47
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2011
    Messages : 47
    Par défaut
    Bonjour,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    select  numero_entete, code_banque_source 
    from clr_fichier 
    where date_traitement= '17/09/2012' 
    and code_banque_source= '150';
    Cette requête marcherait en supposant que le format de data par défaut de votre session soit 'DD/MM/YYYY' ce qui n'est pas toujours le cas. Pour se prémunir des erreurs de conversions implicites des dates (comme ici apparement, Oracle fait al convertion implicite de votre chaîne de caractère en Date mais les formats ne correspondent pas), le mieux reste de faire la converstion explicitement avec la fonction Oracle TO_DATE.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    select  numero_entete, code_banque_source 
    from clr_fichier 
    where date_traitement= TO_DATE('17/09/2012' , 'DD/MM/YYYY')
    and code_banque_source= '150';
    Bonne journée.
    Cordialement,

  5. #5
    Membre averti
    Informaticien
    Inscrit en
    Mai 2011
    Messages
    40
    Détails du profil
    Informations professionnelles :
    Activité : Informaticien
    Secteur : Enseignement

    Informations forums :
    Inscription : Mai 2011
    Messages : 40
    Par défaut
    Citation Envoyé par Juda_ Voir le message
    Bonjour,
    le mieux reste de faire la converstion explicitement avec la fonction Oracle TO_DATE.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    select  numero_entete, code_banque_source 
    from clr_fichier 
    where date_traitement= TO_DATE('17/09/2012' , 'DD/MM/YYYY')
    and code_banque_source= '150';
    Bonne journée.
    Cordialement,
    Merci pour le post mais si je veux dynamiser cette requête ?

  6. #6
    Membre éprouvé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2011
    Messages
    47
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2011
    Messages : 47
    Par défaut
    Je ne connais pas bien le C#, mis à part votre requête je pars du principe que le reste n'est pas à changer. Donc en gardant votre code il n'y a juste à modifier la construction de la requete :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Cmd.CommandText = "select  numero_entete,code_banque_source 
    from clr_fichier 
    where date_traitement=TO_DATE('" + dateText + "', 'DD/MM/YYYY' )
    and code_banque_source='" + idBanque + "'  ";

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

Discussions similaires

  1. ORA-01843: not a valid month
    Par jplec dans le forum PL/SQL
    Réponses: 13
    Dernier message: 23/06/2017, 13h19
  2. [Débutant] ORA-01843 NOT A VALID MONTH avec mon insert
    Par jacko842 dans le forum ADO.NET
    Réponses: 7
    Dernier message: 20/10/2012, 10h45
  3. Erreur Oracle not a valid month
    Par SQL_i dans le forum Oracle
    Réponses: 4
    Dernier message: 14/10/2011, 14h25
  4. Réponses: 6
    Dernier message: 10/06/2011, 13h57
  5. Not a valid month ? ?
    Par szdavid dans le forum Oracle
    Réponses: 22
    Dernier message: 16/01/2006, 16h55

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