Souvent on utilise des champs textes (Textbox) pour entrer une date,
voici une petite routine pour vérifier que s'en est bien une de manière transparente.
tite explication:
dans mon prog, au moment ou l'un des textbox est validé (date début = txtDu, date fin = txtAu, l'un, l'autre ou les deux peuvent remplis ou non), cela recharge une grille de selection par une fonction toute faite nommée SelectionAg_Upd:
Private Sub txtDate_Validated(ByVal sender As Object, ByVal e As System.EventArgs) _
Handles txtDu.Validated, txtAu.Validated
' pas de MaJ rapide si la date est vide
If CType(sender, TextBox).Text = "" Then SelectionAg_Upd()
End Sub
maintenant si je rentre n'importe quoi dans mon text box, il lance quand meme l'update et cela va planter a un moment ou un autre.
donc pour être sur que c'est bien une date j'utilise la petite fonction qui test un cast en date ci dessous:
Source / Exemple :
Private Sub txtDate_Validating(ByVal sender As Object, ByVal e As System.ComponentModel.CancelEventArgs) _
Handles txtDu.Validating, txtAu.Validating
Dim bCancel As Boolean = False
Dim sDate As String = CType(sender, TextBox).Text
Try
If sDate <> "" Then sDate = CDate(sDate) 'si la conversion plante alors c'est pas une date
Catch
bCancel = True 'on a eu une erreur dans le cast donc le text n'est pas une date donc on invalide la date
CType(sender, TextBox).Text = "" 'on remets aussi le txtbox a vide, parceque faut pas casser les couilles à Zorro
Finally
e.Cancel = bCancel
End Try
End Sub
Conclusion :
le code est tres simple, peut être utilisé pour n'importe quels textbox (en changeant les noms dans le handle), et à le mérite d'être accessible par tous.
Il ne teste pas la saisie en cours (ce qui est pénible) et annule l'évenement qui a déclenché à tort la validation.
je suppose qu'il peut y avoir plus simple ou du préprogrammé, donc j'attends vos commentaires avec l'impatience du pourceau devant sa première cuisse :D
vbNouille, cuisses de grenouille.
Une erreur même catchée n'est pas une option du langage, ca reste une erreur
Je laisse la source comme ça on voit comme il ne faut pas faire et comment il faut faire :p
Pour info les "bons vieux" IsNumeric(), IsDate(), Cint(), CBool() etc... sont dans VB.NET alors autant les utilisés, la team VB.NET a eu la gentillesse de nous remettre ces fonctions ;)
je l'ai testé, j'ai pesté me disant que ça éxistait en vb6, j'étais persuadé que ça marchait plus.
la je reteste pour mettre le message d'erreur et pouf rien nickel ça marche.
bon bin oubliez la source alors :D
vb-grosse-nouille, grenouille éthylique
If IsDate(LaDate) Then
...
End If
Vous n'êtes pas encore membre ?
inscrivez-vous, c'est gratuit et ça prend moins d'une minute !
Les membres obtiennent plus de réponses que les utilisateurs anonymes.
Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.
Le fait d'être membre vous permet d'avoir des options supplémentaires.