je souhaite convertir un nombre en date valide, mais j'aimerais entrer n'importe quel nombre de 010101 (01/01/01) à 31129999 (31/12/9999), mais j'ai un problème de filtre pour les dates inférieures au 10 octobre 1010.
Pourriez-me secourir ? Voici le code que j'ai écrit:
Code : Tout sélectionner
ProcedureDLL.s NToD(Nombre.i) ; Convertit un nombre >= 10101000 <= 3112999 en date
Protected sJour.s, sMois.s, sAnnee.s, Resultat.s
Resultat = Str(Nombre)
Annee = Val(Right(Resultat,4))
Select Annee
Case 1000 To 9999
Select Val(Mid(Resultat,3,2))
Case 2
Select Val(Left(Resultat,2))
Case 1 To 28 + SiBissextile(Annee)
sJour = Left(Resultat,2)
sJour = RSet(sJour,2,"0")+"/"
sMois = Mid(Resultat,3,2)
sMois = RSet(sMois,2,"0")+"/"
sAnnee = Right(Resultat,4)
EndSelect
Case 1,3,5,7,8,10,12
Select Val(Left(Resultat,2))
Case 1 To 31
sJour = Left(Resultat,2)
sJour = RSet(sJour,2,"0")+"/"
sMois = Mid(Resultat,3,2)
sMois = RSet(sMois,2,"0")+"/"
sAnnee = Right(Resultat,4)
EndSelect
Case 4,6,9,11
Select Val(Left(Resultat,2))
Case 1 To 30
sJour = Left(Resultat,2)
sJour = RSet(sJour,2,"0")+"/"
sMois = Mid(Resultat,3,2)
sMois = RSet(sMois,2,"0")+"/"
sAnnee = Right(Resultat,4)
EndSelect
EndSelect
EndSelect
Resultat = sJour+sMois+sAnnee
If Resultat
ProcedureReturn Resultat
Else
ProcedureReturn "Erreur"
EndIf
EndProcedure
;Debug NToD(31129999)
;Debug NToD(29022011)
;Debug NToD(29022012)
;Debug NToD(31112011)
;Debug NToD(31102011)
;Debug NToD(01010001)