begin process at 2012 02 12 17:22:13
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Texte

 > [.NET] VALIDER UNE DATE AVANT UTILISATION (RAPIDE - DÉBUTANT)

[.NET] VALIDER UNE DATE AVANT UTILISATION (RAPIDE - DÉBUTANT)


 Information sur la source

 Description

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

  • 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
    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.


 Sources du même auteur

Source .NET (Dotnet) [VB.NET] NUMERIXBOX - UNE TEXTBOX NUMÉRIQUE QUI GÈRE LES DÉC...
Source .NET (Dotnet) [.NET] EXPORT EXCEL XLS RAPIDE PAR MSQUERY (PROC STOCKÉES TA...

 Sources de la même categorie

Source avec Zip Source avec une capture MASQUE DE SAISIE NUMÉRIQUE par acive
Source avec Zip Source .NET (Dotnet) COMPTEUR DE NOMBRE DE MOTS DANS UN TEXTE par alpha5
Source avec Zip Source avec une capture HM - BLOCNOTE par hassenmajor
Source .NET (Dotnet) [VB.NET] CLASS DE COLORATION SYNTAXIQUE "ON THE FLY" par huzima
Source avec Zip Source avec une capture PERSONNALISEZ VOS BOÎTES DE MESSAGE (X)HTML par medjahedScript

Commentaires et avis

Commentaire de Nix le 29/04/2005 20:23:32 administrateur CS

En version plus court et surtout PLUS propre
If IsDate(LaDate) Then
...
End If

Commentaire de Benouille le 29/04/2005 20:31:21

j'hallucine !!!
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

Commentaire de Nix le 29/04/2005 20:36:02 administrateur CS

Tant que j'y suis, je rappelle que se servir du try/catch (comme se servaient bon nombre de On Error Resume Next sous VB6) est UN TRES MAUVAISE IDEE :p

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 ;)

Commentaire de chris81 le 01/05/2005 19:12:35

en .net tu as les DateTimePicker qui evite tous ce genre de test :)

 Ajouter un commentaire




Nos sponsors


Sondage...

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

Photothèque

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 1,607 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales