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.
1 2
| Dim MyDate As Date
Dim MyDateIsNull As Boolean |
2) Via une class OptionalDate qui gèrera pour toi l'indicateur de nullité:
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 |
Partager