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

Windows Forms Discussion :

DateTime et base Access


Sujet :

Windows Forms

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Novembre 2007
    Messages
    73
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 73
    Par défaut DateTime et base Access
    Bonjour à tous,

    Je suis confronter à un léger problème. Je fais une application C# et mes données sont stockées dans Access. Jusque la pas de problème pour accéder et rentrer de nouvelles données.

    Mais maintenant je souhaite utiliser des dates et la ça devient très problématique.

    J'extrait une DataTable de ma base et j'instancie un objet Contrat avec.
    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 Contrat(DataTable contratCharge)
            {
                  this.coCateg = contratCharge.Rows[0]["coCateg"].ToString(); 
                  this.coCoeff = contratCharge.Rows[0]["coCoeff"].ToString(); 
                  this.cocommentaire = contratCharge.Rows[0]["cocommentaire"].ToString();   
                  //this.codateDebut.Add(contratCharge.Rows[0]["codateDebut"]);
                  this.codatedebut = ((DateTime)contratCharge.Rows[0]["codateDebut"]).Date;
                  this.codateFin = ((DateTime)contratCharge.Rows[0]["codateFin"]);     
                  this.codateFinPrevue = ((DateTime)contratCharge.Rows[0]["codateFinPrevue"]); 
                  this.coDateFinProlong = ((DateTime)contratCharge.Rows[0]["coDateFinProlong"]); 
                  this.coDateSignature = ((DateTime)contratCharge.Rows[0]["coDateSignature"]); 
                  this.CoDI = contratCharge.Rows[0]["CoDI"].ToString(); 
                  this.coEchelon = contratCharge.Rows[0]["coEchelon"].ToString(); 
                  this.coInsertC2 = ((bool)contratCharge.Rows[0]["coInsertC2"]); 
                  this.comotif = contratCharge.Rows[0]["comotif"].ToString(); 
                  this.comotifcourt = contratCharge.Rows[0]["comotifcourt"].ToString(); 
                  this.coNiv = contratCharge.Rows[0]["coNiv"].ToString(); 
                  this.coNumContrat = contratCharge.Rows[0]["coNumContrat"].ToString(); 
                  this.coOA = contratCharge.Rows[0]["coOA"].ToString(); 
                  this.coregistreEntree = ((bool)contratCharge.Rows[0]["coregistreEntree"]); 
                  this.coregistreSortie = ((bool)contratCharge.Rows[0]["coregistreSortie"]); 
                  this.coSalaire = ((Double)contratCharge.Rows[0]["coSalaire"]);
                  this.cosoldeRtt = ((bool)contratCharge.Rows[0]["cosoldeRtt"]); 
                  this.cosouplesseMaxi = ((int)contratCharge.Rows[0]["cosouplesseMaxi"]);
                  this.cosouplesseMini = ((int)contratCharge.Rows[0]["cosouplesseMini"]);
                  this.coStatReception = ((bool)contratCharge.Rows[0]["coStatReception"]); 
                  this.costatutContrat = contratCharge.Rows[0]["costatutContrat"].ToString(); 
                  this.inAlps = contratCharge.Rows[0]["inAlps"].ToString(); 
                  this.secode = contratCharge.Rows[0]["secode"].ToString(); 
                  this.socoFourBaan = contratCharge.Rows[0]["socoFourBaan"].ToString(); 
                  this.meid = contratCharge.Rows[0]["meid"].ToString(); 
            }
    Pour les String, les booleens et les numérique pas de problème (enfin pas d'erreur mais je n'ai pas encore vu ce que ça donnait par la suite).

    Par contre je n'arrive pas du tout à insérer les champs date dans ma classe...

    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
    public class Contrat
        {
            public String coCateg { get; set; }
            public String CoDI { get; set; }
            public String coNumContrat { get; set; }
            public String meid { get; set; }
            public String socoFourBaan { get; set; }
            public String inAlps { get; set; }
            public String secode { get; set; }
            public String coNiv { get; set; }
            public String coEchelon { get; set; }
            public String coCoeff { get; set; }
            public String costatutContrat { get; set; }
            public bool coregistreEntree { get; set; }
            public bool coregistreSortie { get; set; }
            public DateTime codateDebut { get; set; }
            public DateTime codateFin { get; set; }
            public int cosouplesseMini { get; set; }
            public int cosouplesseMaxi { get; set; }
            public DateTime codateFinPrevue { get; set; }
            public DateTime coDateFinProlong { get; set; }
            public String cocommentaire { get; set; }
            public bool cosoldeRtt { get; set; }
            public String comotifcourt { get; set; }
            public String comotif { get; set; }
            public bool coStatReception { get; set; }
            public DateTime coDateSignature { get; set; }
            public Double coSalaire { get; set; }
            public String coOA { get; set; }
            public bool coInsertC2 { get; set; }
            public Metier cometier;
    Quelqu'un saurait il comment je dois faire ?

  2. #2
    Inactif  
    Homme Profil pro
    Inscrit en
    Septembre 2003
    Messages
    570
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Septembre 2003
    Messages : 570
    Par défaut
    quelle est l'exception levée quand tu exécute ton code?

  3. #3
    Membre confirmé
    Inscrit en
    Novembre 2007
    Messages
    73
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 73
    Par défaut
    Bonjour,

    Voici l'exception soulevée :

    L'exception System.InvalidCastException n'a pas été gérée
    Message="Le cast spécifié n'est pas valide."
    Sur la première ligne ou j'essaie de rentrer un dateTime, donc j'aurai le cas pour tous...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     this.codateDebut = ((DateTime)contratCharge.Rows[0]["codateDebut"]);
    Déclaration de codateDebut :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     public DateTime codateDebut { get; set; }

  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
    Hello,

    exécute ton code debug, en pas à pas, et mets un espion sur contratCharge.Rows[0]["codateDebut"]. Tu sauras alors son type (qui visiblement n'est pas dateTime )

  5. #5
    Inactif  
    Homme Profil pro
    Inscrit en
    Septembre 2003
    Messages
    570
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Septembre 2003
    Messages : 570
    Par défaut
    qui visiblement n'est pas dateTime
    si c le cas:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Convert.ToDateTime(contratCharge.Rows[0]["codateDebut"]);

  6. #6
    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
    Citation Envoyé par nsanabi Voir le message
    si c le cas:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Convert.ToDateTime(contratCharge.Rows[0]["codateDebut"]);
    C'est plus compliqué que ça. On sait pas comment access stocke les dates, on sait pas comment le provider ADO.Net les restitue, on sait pas, si jamais ce sont des chaînes, comment c'est formaté (dd/mm/yyyy ? mm/dd/yyyy ? yyyy/mm/dd ?)

    Attendons d'abord de voir quels sont le type et la valeur de ce mystérieux contratCharge.Rows[0]["codateDebut"]

  7. #7
    Membre confirmé
    Inscrit en
    Novembre 2007
    Messages
    73
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 73
    Par défaut
    Alors j'ai testé en remplissant une date mais pas l'autre dans ma base,
    codateDebut est vide et ça bloque
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    -contratCharge.Rows[0]["codateDebut"]	{}	object {System.DBNull}
    Et codaFin est rempli mais me donne ça comme date
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    +		Date	{01/01/0001 00:00:00}	System.DateTime
    Alors que c'est le 26/02/2010 normalement.

    Comment faire pour pouvoir passer une date à null (car il y en aura)
    et comment passer la bonne date quand elle est remplie ?

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

Discussions similaires

  1. [VB.NET] Base Access et valeur de datetime picker
    Par -Fly- dans le forum Débuter
    Réponses: 8
    Dernier message: 14/06/2012, 12h05
  2. migration de base access vers postgres
    Par greg_ggl dans le forum PostgreSQL
    Réponses: 3
    Dernier message: 09/03/2006, 10h33
  3. Crash Base Access
    Par Ronald G. dans le forum Access
    Réponses: 4
    Dernier message: 04/08/2003, 11h55
  4. Export base Access vers MySql
    Par jjn1er dans le forum Outils
    Réponses: 7
    Dernier message: 10/03/2003, 23h50
  5. [VB6] [ADO] Like sur base Access
    Par dlpxlid dans le forum VB 6 et antérieur
    Réponses: 9
    Dernier message: 24/01/2003, 11h03

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