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

VBA Access Discussion :

Initialiser date Access


Sujet :

VBA Access

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Février 2009
    Messages
    68
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 68
    Points : 42
    Points
    42
    Par défaut Initialiser date Access
    Bonjour,

    Sur VBA, lorsque je tente d'initialiser une date avec Date = Null, j'observe que dans la table j'obtiens une valeur 00:00:00
    Savez vous comment faire pour que la date soit initialisée avec rien à l'intérieur ?
    En effet, lorsque j'exécute mes requêtes SQL, cette valeur n'est pas considérée comme nulle.


    Merci pour votre aide.

  2. #2
    Membre chevronné
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    1 389
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 389
    Points : 2 022
    Points
    2 022
    Par défaut
    Salut,

    Il convient différencier le type Date du langage VBA du type Date de la base de données, ce sont 2 notions, bien que très ressemblantes, complètement distinct.

    Le premier type, Date du langage VBA:
    Contient toujours une date valide.
    Ne supporte pas les valeurs nulle.

    Le second type, Date de la base de données:
    Supporte les valeurs nulle.
    Contient une date valide s'il n'est pas nulle.

    Coté VBA, je te suggère 2 approches:
    1) Avoir une paire de variables, l'une contenant la valeur, et l'autre booléenne indiquant si la valeur est null ou pas.
    A ta responsabilité de gérer ces 2 variables correctement.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Dim MyDate As Date
    Dim MyDateIsNull As Boolean
    2) Via une class OptionalDate qui gèrera pour toi l'indicateur de nullité:
    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
    '// Class module: OptionalDate
    Option Explicit
     
    Private mHasValue As Boolean
    Private mValue As Date
     
        '// Constructeur
    Private Sub Class_Initialize()
        mHasValue = False
    End Sub
     
        '// Remise à zero
    Public Sub Reset()
        mHasValue = False
    End Sub
     
        '// Lecture de la valeur
        '// WARNING: La valeur est invalide si la propriété HasValue retourne False
    Public Property Get Value() As Date
        Value = mValue
    End Property
     
        '// Ecriture de la valeur
    Public Property Let Value(ByVal Dt As Date)
        mHasValue = True
        mValue = Dt
    End Property
     
        '// Retourne l'indicateur de nullité
    Public Property Get HasValue() As Boolean
        HasValue = mHasValue
    End Property

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Février 2009
    Messages
    68
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 68
    Points : 42
    Points
    42
    Par défaut
    Citation Envoyé par deedolith Voir le message
    Salut,

    Il convient différencier le type Date du langage VBA du type Date de la base de données, ce sont 2 notions, bien que très ressemblantes, complètement distinct.

    Le premier type, Date du langage VBA:
    Contient toujours une date valide.
    Ne supporte pas les valeurs nulle.

    Le second type, Date de la base de données:
    Supporte les valeurs nulle.
    Contient une date valide s'il n'est pas nulle.

    Coté VBA, je te suggère 2 approches:
    1) Avoir une paire de variables, l'une contenant la valeur, et l'autre booléenne indiquant si la valeur est null ou pas.
    A ta responsabilité de gérer ces 2 variables correctement.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Dim MyDate As Date
    Dim MyDateIsNull As Boolean
    2) Via une class OptionalDate qui gèrera pour toi l'indicateur de nullité:
    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
    '// Class module: OptionalDate
    Option Explicit
     
    Private mHasValue As Boolean
    Private mValue As Date
     
        '// Constructeur
    Private Sub Class_Initialize()
        mHasValue = False
    End Sub
     
        '// Remise à zero
    Public Sub Reset()
        mHasValue = False
    End Sub
     
        '// Lecture de la valeur
        '// WARNING: La valeur est invalide si la propriété HasValue retourne False
    Public Property Get Value() As Date
        Value = mValue
    End Property
     
        '// Ecriture de la valeur
    Public Property Let Value(ByVal Dt As Date)
        mHasValue = True
        mValue = Dt
    End Property
     
        '// Retourne l'indicateur de nullité
    Public Property Get HasValue() As Boolean
        HasValue = mHasValue
    End Property
    Très Bien c'est très clair.
    Je vais gérer cela par une autre variable.
    Merci Deedolith !

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

Discussions similaires

  1. probleme de date, Access et SQL
    Par riesseg dans le forum VBA Access
    Réponses: 9
    Dernier message: 12/04/2006, 18h42
  2. Pb Date access 2003
    Par lotus77777 dans le forum Access
    Réponses: 3
    Dernier message: 20/10/2005, 18h11
  3. toujours ces dates Access malgré le FAQ
    Par kleenex dans le forum Access
    Réponses: 2
    Dernier message: 17/10/2005, 15h04
  4. Comparer des Dates (Access, jdbc)
    Par babylone7 dans le forum Langage SQL
    Réponses: 3
    Dernier message: 13/07/2005, 11h01
  5. Problèmes de dates ACCESS/MySQL
    Par TomPad dans le forum Installation
    Réponses: 1
    Dernier message: 28/06/2005, 11h05

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