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

VB.NET Discussion :

Petit Soucis avec le format Date


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2006
    Messages
    505
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Février 2006
    Messages : 505
    Par défaut Petit Soucis avec le format Date
    Bonjour à vous

    Je comprend pas ce qui arrive avec le test de mon code, du coup je me dit que je problème est surement devant le clavier Je me tourne tout de même vers vous pour m'aider à ajuster mon code pour un meilleur résultat.

    Dans la routine de mon code je récupère une date, jusque la tout vas bien, en fait c'est une variable string que je convertie en date. Par fois la variable string contiens "N/A" donc je donne donc Nothing à ma Date.

    En mode break, ma variable de format date contiens 12:00:00AM.

    lorsque j'enregistre ma variable dans ma base Access de façon fortement typé, la cellule de ma BD marque 2001-01-01.

    des suggestions de corrections seraient très apprécié.

    voici mon code qui récupère ma date

    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
    Case "Ex-Div Date:"
                                    If Tmpstr.Contains("Ex-Div Date:") Then
                                        Int1 = Tmpstr.IndexOf("qmCompanyData")
                                        Int1 = Tmpstr.IndexOf("Ex-Div Date:", Int1)
                                        Int1 = Tmpstr.IndexOf("<td class=", Int1)
                                        Int1 = Tmpstr.IndexOf(">"c, Int1) + 1
                                        Int2 = Tmpstr.IndexOf("<"c, Int1)
                                        StrRep = Tmpstr.Substring(Int1, Int2 - Int1)
                                        StrRep = StrRep.Trim
                                        If IsDate(StrRep) Then
                                            Don.DateExDiv = CDate(StrRep)
                                            'Console.WriteLine(Don.DateExDiv)
                                        Else
                                            Don.DateExDiv = Nothing
                                            'Console.WriteLine(Don.DateExDiv)
                                        End If

  2. #2
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2006
    Messages
    505
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Février 2006
    Messages : 505
    Par défaut
    j'oubliais le code lors de l'enregistrement

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    .Add(New OleDbParameter("@DateExDiv", OleDb.OleDbType.DBDate))
    dans le fond, comment je fais pour avoir une cellule vide dans ma bd si il n'y a pas de date ?

  3. #3
    Expert éminent Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 198
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 198
    Par défaut
    une variable date en vb.net quand elle n'est pas remplie vaut 1/1/1 12am
    c'est ca valeur d'initialisation, tout comme un integer vaut 0 par défaut

    certains types date en base vont de 1950 à 2050, et donc l'anné 1 est considérée comme 2001

    il faut donc changer ton type de date pour que ca soit un vrai type date, pas un smalldate


    après si tu veux pouvoir enregistrer le fait qu'il n'y a pas de date, il faut que ta colonne dans access accepte NULL, que ta variable dans .net soit de type date? (équivaut à nullable(of date))
    et pour mettre un null depuis une requete il faut que le parameter ait la valeur System.DbNull.Value
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  4. #4
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2006
    Messages
    505
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Février 2006
    Messages : 505
    Par défaut
    Merci Pol j'ai fais les ajustements que tu m'as dit.

    j'ai modifier ma table de bd,

    j'ai modifier dans ma class
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Private _DatExDiv As Nullable(Of Date) = Nothing
    maintenant j'accroche au niveau des paramètres voici ce que j'ai essayé

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    .Add(New OleDbParameter("@DateExDiv", OleDb.OleDbType.DBDate))
    .Parameters("@DateExDiv").Value = System.DBNull.Value(CDate(SQlS(11)))

  5. #5
    Expert éminent Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 198
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 198
    Par défaut
    à la place de
    Private _DatExDiv As Nullable(Of Date) = Nothing
    on peut écrire
    Private _DatExDiv As Date?

    Visual studio prend en charge la syntaxe de rajouter un ? derrière un type par valeur pour gérer le fait qu'il est nullable, et c'est à la compilation qu'il compile un nullable(of )



    pour le parameter il faut le faire en 2 temps (ou avec un iif) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    parameters.Addwithvalue("@date",system.dbnull.value)
    if madate.hasvalue then parameters("@date").value = madate.value
    system.dbnull.value c'est une valeur (null) ca ne demande pas de paramètre
    la classe nullable a 2 propriétés utiles : HasValue qui te dit si il y a quelque chose dedans ou si c'est nothing et Value qui te donne la valeur as le type de base (date en l'occurrence)
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  6. #6
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2006
    Messages
    505
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Février 2006
    Messages : 505
    Par défaut
    Merci Pol j'avance je sens que j'y arrive

    voici ce que j'ai fait

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    .Parameters.AddWithValue("@DateExDiv", System.DBNull.Value)
                    If Not SQlS(11) = Nothing Then
                        .Parameters("@DateExDiv").Value = SQlS(11)
                    End If
    ma variable sqis(11) = ""
    et j'ai un message d'erreur
    Informations supplémentaires*: La mise à jour à échoué Le paramètre @DateExDiv n'a pas de valeur par défaut.

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

Discussions similaires

  1. petit soucis avec la fonction date
    Par gaston11 dans le forum Débuter
    Réponses: 4
    Dernier message: 04/02/2013, 22h42
  2. Petit souci avec dates
    Par santacrus dans le forum VBA Access
    Réponses: 9
    Dernier message: 11/10/2009, 08h06
  3. Un petit souci avec les dates
    Par Ben-o dans le forum SQL Procédural
    Réponses: 11
    Dernier message: 27/09/2007, 18h42
  4. [DEBUTANT] petits soucis avec un prgm de chat
    Par LechucK dans le forum MFC
    Réponses: 8
    Dernier message: 19/01/2004, 16h52

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