"Isnull" qui marche pas très bien avec une Zone de texte
loic911
Messages postés24Date d'inscriptionsamedi 6 novembre 2004StatutMembreDernière intervention10 mai 2005
-
5 mai 2005 à 17:31
dam84
Messages postés40Date d'inscriptionmercredi 18 décembre 2002StatutMembreDernière intervention17 mai 2005
-
11 mai 2005 à 12:47
Salut,
J'ai un problème assez bizarre quand j'essais de controler si l'utilisateur a entrer des valeurs correctes dans des zones de texte.
Je lui demande d'entrer un numéro de carte Sis, un nom, un prénom, une adresse, un CP, une ville, un statut Vipo, une date de naissance.
Seul la ville et la date peuvent être Null
Donc je tape toute mes alternative et pour voir si ca marche je lance le formulaire. Le controle des erreurs s'effectuera quand l'utilisateur cliquera sur un bouton.
Le programme affichera une fenetre dans laquelle il y aura toute les
erreurs relatives au remplissage des champs (variable "erreur")
Je recontre un soucis assez bizarre. Le controle de la valeur "null" marche pour tous les champs sauf pour "Nom" et "Prénom"...
Donc il ne détecte rien si l'utilisateur n'entre pas de nom et clique sur le bouton.
Mais si l'utilisateur entre une valeur dans le champ "nom", clique
sur le bouton, efface la valeur et reclique sur le bouton: il va
détecter l'absence de valeur...
Voilà la fonction (encore loin d'être finie et optimisée):
Private Function controlervaleur()
Dim erreur As String
'Carte Sis
If IsNull(Me.Txt_Sis) Then
erreur = erreur & vbCrLf & "Vous n'avez pas entré de numéro de carte Sis"
ElseIf Not IsNumeric(Me.Txt_Sis) Then
erreur = erreur & vbCrLf
& "Le numéro de carte Sis doit être composé uniquement de chiffre"
Me.Txt_Sis = ""
ElseIf Len(Me.Txt_Sis) <> 10 Then
erreur = erreur & vbCrLf
& "Le numéro de carte Sis doit être composé de 10 chiffres"
End If
'Nom
If IsNull(Me.Txt_Nom) Then
erreur = erreur & vbCrLf & "Vous n'avez pas entré de nom"
ElseIf Len(Me.Txt_Nom) > 25 Then
erreur = erreur & vbCrLf & "Le nom est trop long"
End If
'Prénom
If IsNull(Me.Txt_Prenom) Then
erreur = erreur & vbCrLf & "Vous n'avez pas entré de prénom"
ElseIf Len(Me.Txt_Prenom) > 25 Then
erreur = erreur & vbCrLf & "Le prénom est trop long"
End If
'Date
If Not IsNull(Me.Txt_Naissance) Then
If Not IsDate(Me.Txt_Naissance) Then
erreur = erreur & vbCrLf & "La date est incorrecte"
Renfield
Messages postés17287Date d'inscriptionmercredi 2 janvier 2002StatutModérateurDernière intervention27 septembre 202174 6 mai 2005 à 10:11
privilégiez l'usage de VbNullString en lieu et place de ""
autre chose, le test d'une chaine vide la plus rapide en temps d'execution est :
if LenB ( Chaine ) <> 0 Then
VB fonctionne en Unicode. Les chaines sont donc en DBSC. traduction : un caractère sur deux octets... quand vous demandez len ( a ) VB doit donc diviser la longeur par 2 pour donner le nombre de caractères, et non le nombre d'octets.... LenB donne le nombre d'octets. Vu que l'on recherche 0 , la division nous importe peu...
loic911
Messages postés24Date d'inscriptionsamedi 6 novembre 2004StatutMembreDernière intervention10 mai 2005 6 mai 2005 à 13:02
Il me reste quand même un problème
Si je lance le formulaire et que je veux ajouter un patient sans lui
mettre de nom. Je clique sur "ajouter" (bouton qui délcenche la
fonction de vérification)
Il m'affiche une erreur en disant qu'il n'y a pas de nom (normal).
Si je lui met un nom et que je clique sur ajouter, il veut bien (normal)...
mais si je réefface le nom, il ne détectera plus l'absence de nom (pas normal).
J'ai essayer avec vbnullstring, len(...)=0, isnull(...) et = ""
Comment controler efficacement si une case contient quelque chose...si
je met son contenu dans une variable pour controler, j'obient une
erreur si il n'y a rien dedans (mauvaise utilisation du Null)