Conflit de code dans même application (vb)
Fermé
raro
Messages postés
140
Date d'inscription
vendredi 5 septembre 2003
Statut
Membre
Dernière intervention
7 avril 2016
-
4 mai 2005 à 21:49
Utilisateur anonyme - 10 mai 2005 à 05:42
Utilisateur anonyme - 10 mai 2005 à 05:42
A voir également:
- Ortohraphe
- Application mobile - Guide
- Code ascii de a - Guide
- Code puk bloqué - Guide
- Code de déverrouillage oublié - Guide
- Application gps sans internet - Guide
3 réponses
Utilisateur anonyme
4 mai 2005 à 22:51
4 mai 2005 à 22:51
Salut,
Je ne comprends pas bien la question ???
Note : Dans ton code, je vois la partie que tu as soulevé dans un autre message, et je vois que tu as conservé la variable [Dum] qui remplace ta variable [text_prenom.Text].
De plus, la constante Alphabet ne necessite pas que tu y ajoute
les minuscules puisque UCase(Trim(Mid(Dum, h, 1))) effectue le test sur la valeur majuscule du caractère.
Pour ce qui est de du mode [Modifier] versus le mode [Ajout], je ne saisie pas bien!!!
Lupin
Je ne comprends pas bien la question ???
Note : Dans ton code, je vois la partie que tu as soulevé dans un autre message, et je vois que tu as conservé la variable [Dum] qui remplace ta variable [text_prenom.Text].
De plus, la constante Alphabet ne necessite pas que tu y ajoute
les minuscules puisque UCase(Trim(Mid(Dum, h, 1))) effectue le test sur la valeur majuscule du caractère.
Pour ce qui est de du mode [Modifier] versus le mode [Ajout], je ne saisie pas bien!!!
Lupin
Utilisateur anonyme
5 mai 2005 à 20:42
5 mai 2005 à 20:42
Salut,
J'ai tester le code que tu as fourni, et je comprends mieux le problème, le système doit gérer un état distinct entre une modification et un ajout. Or sur la perte de [focus], le systeme recommence toute les validations.
Je recommande de te faire un algorithme du genre d'une séquence qui te donneras toujours l'état du système. La validation d'un champs donné doit être unique au champs en ajout comme en modification, ce n'est que lors de l'écriture qu'il est important de valider tous les champs avant l'opération.
Suis assez clair, la perte du focus d'un champs ne doit valider que le champs en question. Une fonction spécifique qui produit l'écriture des données se chargeras de faire toutes les validations des champs en cause.
Les champs [text box] possède une propriété [Tag] que tu peux utiliser a souhait. Lorsque la routine de ferte de focus d'un champs valide celui-ci tu peux donner la valeur [True] au champs [Tag], et la routine d'écriture valide tous les champs [Tag] nécessaires !
Autre observation, j'ai remodeler cette partie qui suit !
Peux-tu comprendre le changement (pas de [Exit])
'Sub text_Licence2_lostfocus()
'
' 'verification du type de caractères saisi: numérique obligatoire
' 'déclaration et initialisation du pointeur i
' Dim I As Integer
'
' If ((Screen.ActiveControl.Name <> "cmd_annuler") And (Screen.ActiveControl.Name <> "cmd_fermer")) Then
' 'pointer i sur toute la longueur de la saisie à partir du premier caractère
' 'si la zone texte de text_licence ne contient pas 15 caractère alors
' If (Len(Text_Licence) = 15) Then
' For I = 1 To 15
' 'si un ou plusieurs caractères saisis sont différents de 0 à 9 alors
' If UCase(Trim(Mid(Text_Licence.Text, I, 1))) Like "[!0-9]" Then
' MsgBox "la saisie ne peut comporter que des chiffres"
' 'remise à blanc de text_licence
' Text_Licence.Text = ""
' I = (16)
' End If
' Next I
' Else
' MsgBox "la saisie de 15 caractères numérique est obligatoire"
' 'remise à blanc de la zone texte et reprise du focus
' Text_Licence.Text = ""
' End If
' End If
'
'End Sub'
Lupin
J'ai tester le code que tu as fourni, et je comprends mieux le problème, le système doit gérer un état distinct entre une modification et un ajout. Or sur la perte de [focus], le systeme recommence toute les validations.
Je recommande de te faire un algorithme du genre d'une séquence qui te donneras toujours l'état du système. La validation d'un champs donné doit être unique au champs en ajout comme en modification, ce n'est que lors de l'écriture qu'il est important de valider tous les champs avant l'opération.
Suis assez clair, la perte du focus d'un champs ne doit valider que le champs en question. Une fonction spécifique qui produit l'écriture des données se chargeras de faire toutes les validations des champs en cause.
Les champs [text box] possède une propriété [Tag] que tu peux utiliser a souhait. Lorsque la routine de ferte de focus d'un champs valide celui-ci tu peux donner la valeur [True] au champs [Tag], et la routine d'écriture valide tous les champs [Tag] nécessaires !
Autre observation, j'ai remodeler cette partie qui suit !
Peux-tu comprendre le changement (pas de [Exit])
'Sub text_Licence2_lostfocus()
'
' 'verification du type de caractères saisi: numérique obligatoire
' 'déclaration et initialisation du pointeur i
' Dim I As Integer
'
' If ((Screen.ActiveControl.Name <> "cmd_annuler") And (Screen.ActiveControl.Name <> "cmd_fermer")) Then
' 'pointer i sur toute la longueur de la saisie à partir du premier caractère
' 'si la zone texte de text_licence ne contient pas 15 caractère alors
' If (Len(Text_Licence) = 15) Then
' For I = 1 To 15
' 'si un ou plusieurs caractères saisis sont différents de 0 à 9 alors
' If UCase(Trim(Mid(Text_Licence.Text, I, 1))) Like "[!0-9]" Then
' MsgBox "la saisie ne peut comporter que des chiffres"
' 'remise à blanc de text_licence
' Text_Licence.Text = ""
' I = (16)
' End If
' Next I
' Else
' MsgBox "la saisie de 15 caractères numérique est obligatoire"
' 'remise à blanc de la zone texte et reprise du focus
' Text_Licence.Text = ""
' End If
' End If
'
'End Sub'
Lupin
raro
Messages postés
140
Date d'inscription
vendredi 5 septembre 2003
Statut
Membre
Dernière intervention
7 avril 2016
37
6 mai 2005 à 01:52
6 mai 2005 à 01:52
aurais-tu un exemple concret concernant "TAG" car je t'avoue que je ne sais pas du tout comment l'utiliser:
est-ce le "tag" dans la fenêtre des propriétés ou une fonction?
je t'avoue que j'aimerai en savoir plus car à vouloir trop cadenasser mon appli avec mes règles de gestion je doit reconnaitre que mes faibles connaissances en vb ne me permettent pas de trouver une solution fiable. A l'heure actuelle mon appli fonctionne parfaitement concernant l'envoi de données sur la base à condition de ne pas faire d'erreurs de saisie, d'autant que rien que le numéro de licence d'un nageur contient 15 caractères et un espace et qu'il me faut cette base à la rentrée (septembre) car je suis en train de créer un site internet(www.toutelanat.org) permettant d'accéder à des résultats de compétitions que la ffn ne publie pas. Actuellement je crée ma base sous access ensuite je l'installerai sur mon site en faisant une migration de base , cette base me servira à donner des stats sur les progressions, les records de la saison etc je fait cela surtout pour les petits (poussin/avenirs, benjamins) car la ffn ne publie que les résultats de niveau régional ou national et donc les petits sont exclus
et ne peuvent pas accéder aux résultats .
voila, je t'ai un peu raconter ma vie mais c'est simplement pour te dire que ce projet me tient à coeur et que j'aimerai être prêt pour le début de la saison prochaine à+ et merci encore
est-ce le "tag" dans la fenêtre des propriétés ou une fonction?
je t'avoue que j'aimerai en savoir plus car à vouloir trop cadenasser mon appli avec mes règles de gestion je doit reconnaitre que mes faibles connaissances en vb ne me permettent pas de trouver une solution fiable. A l'heure actuelle mon appli fonctionne parfaitement concernant l'envoi de données sur la base à condition de ne pas faire d'erreurs de saisie, d'autant que rien que le numéro de licence d'un nageur contient 15 caractères et un espace et qu'il me faut cette base à la rentrée (septembre) car je suis en train de créer un site internet(www.toutelanat.org) permettant d'accéder à des résultats de compétitions que la ffn ne publie pas. Actuellement je crée ma base sous access ensuite je l'installerai sur mon site en faisant une migration de base , cette base me servira à donner des stats sur les progressions, les records de la saison etc je fait cela surtout pour les petits (poussin/avenirs, benjamins) car la ffn ne publie que les résultats de niveau régional ou national et donc les petits sont exclus
et ne peuvent pas accéder aux résultats .
voila, je t'ai un peu raconter ma vie mais c'est simplement pour te dire que ce projet me tient à coeur et que j'aimerai être prêt pour le début de la saison prochaine à+ et merci encore
Utilisateur anonyme
10 mai 2005 à 05:42
10 mai 2005 à 05:42
Re :
VB en accès sur une bd Access.
LA DONNEE
Les champs [textbox] sont flotants, ou attaché sur un objet, ou attacher par programmation ?
Ex.: posons que les champs sont flotants.
LA RELATION
Créer un ensemble des objets [textbox]
(Donner le même noms à tous les objets [textbox], au deuxième VB demande la création d'un ensemble)
Champs(0) = text_nom
Champs(1) = text_prenom
Champs(2) = text_datedenaissance
Champs(3) = text_sexe
Champs(4) = text_licence
LES COMMANDES
Lecture
Création
Modification
Le mode [Création] est en fait le mode [Modification] plus quelques intructions.
(Pointeur de fin égale pointeur de fin + 1, mise à zéro de tous les champs)
LE CONTROLE
Private Sub Champs_LostFocus(Index As Integer)
Select Case (Index)
Case 0: Text_Nom
Case 1: Text_Prenom
Case 2: Text_DatNais
Case 3: Text_Sexe
Case 4: Text_Licence
Case Else: DoEvents
End Select
End Sub
'Fonction a appeller avant écriture
'Avec vrai ou faux en réponse
Function ValideSaisies() As Boolean
Dim Boucle As Integer
ValideSaisies = True
For Boucle = 0 To 4
Call Champs_LostFocue(Boucle)
If (Champs(Boucle).Tag = False) Then
ValideSaisies = False
Boucle = 5
End If
Next Boucle
End Function
'Fonction appeller par [Text_Nom] & [Text_Pronom]
Function Caracteres(Indice As Integer) As Boolean
Const Alphabet = "ABCDEFGHIJKLMNOPQRSTUVWXYZÜÄËÏÉÈÀÙ-"
'verification du type de caractères saisi: alpha obligatoire
'déclaration et initialisation du pointeur a
Dim Cmpt As Integer
Dim Rep As Long
'pointer a sur toute la longueur de la saisie à partir du premier caractère
For Cmpt = 1 To Len(Champs(Indice))
'si un ou plusieurs caractères saisis sont différents de A à Z alors
Rep = InStr(1, Alphabet, UCase(Mid(Champs(Indice).Text, Cmpt, 1)), vbTextCompare)
If (Rep = 0) Then
'remise à blanc et reprise du focus par text_prenom
Champs(Indice) = ""
Champs(Indice).Tag = False
Cmpt = (Len(Champs(Indice)) + 1)
Caracteres = False
End If
Next h
Caracteres = True
End Function
'Un exemple type de :
Private Sub Text_Nom()
If (Caracteres(0))then
Champs(1).SetFocus
Else
MsgBox "la saisie ne peut comporter que des lettres"
End If
End Sub
Ca donne a peu de choses près cela :-)
Lupin
VB en accès sur une bd Access.
LA DONNEE
Les champs [textbox] sont flotants, ou attaché sur un objet, ou attacher par programmation ?
Ex.: posons que les champs sont flotants.
LA RELATION
Créer un ensemble des objets [textbox]
(Donner le même noms à tous les objets [textbox], au deuxième VB demande la création d'un ensemble)
Champs(0) = text_nom
Champs(1) = text_prenom
Champs(2) = text_datedenaissance
Champs(3) = text_sexe
Champs(4) = text_licence
LES COMMANDES
Lecture
Création
Modification
Le mode [Création] est en fait le mode [Modification] plus quelques intructions.
(Pointeur de fin égale pointeur de fin + 1, mise à zéro de tous les champs)
LE CONTROLE
Private Sub Champs_LostFocus(Index As Integer)
Select Case (Index)
Case 0: Text_Nom
Case 1: Text_Prenom
Case 2: Text_DatNais
Case 3: Text_Sexe
Case 4: Text_Licence
Case Else: DoEvents
End Select
End Sub
'Fonction a appeller avant écriture
'Avec vrai ou faux en réponse
Function ValideSaisies() As Boolean
Dim Boucle As Integer
ValideSaisies = True
For Boucle = 0 To 4
Call Champs_LostFocue(Boucle)
If (Champs(Boucle).Tag = False) Then
ValideSaisies = False
Boucle = 5
End If
Next Boucle
End Function
'Fonction appeller par [Text_Nom] & [Text_Pronom]
Function Caracteres(Indice As Integer) As Boolean
Const Alphabet = "ABCDEFGHIJKLMNOPQRSTUVWXYZÜÄËÏÉÈÀÙ-"
'verification du type de caractères saisi: alpha obligatoire
'déclaration et initialisation du pointeur a
Dim Cmpt As Integer
Dim Rep As Long
'pointer a sur toute la longueur de la saisie à partir du premier caractère
For Cmpt = 1 To Len(Champs(Indice))
'si un ou plusieurs caractères saisis sont différents de A à Z alors
Rep = InStr(1, Alphabet, UCase(Mid(Champs(Indice).Text, Cmpt, 1)), vbTextCompare)
If (Rep = 0) Then
'remise à blanc et reprise du focus par text_prenom
Champs(Indice) = ""
Champs(Indice).Tag = False
Cmpt = (Len(Champs(Indice)) + 1)
Caracteres = False
End If
Next h
Caracteres = True
End Function
'Un exemple type de :
Private Sub Text_Nom()
If (Caracteres(0))then
Champs(1).SetFocus
Else
MsgBox "la saisie ne peut comporter que des lettres"
End If
End Sub
Ca donne a peu de choses près cela :-)
Lupin
5 mai 2005 à 00:41
en ce qui concerne ajouter vs modifier :
lorsque je clique sur "ajouter" les 5 zones textes sont soumises a des règles de gestion (majuscules, format date , nombre de caractères etc)
le problème c'est que dans" modifier" je ne veux modifier qu'une zone texte, imaginons que j'ai mal saisi le nom,que je l'ai enregistrer dans la base et que je m'apercoive ensuite de mon erreur, je ne veux changer que le nom, or,après avoir changer l'ortohraphe du nom, si je veux valider la msgbox me demande de saisir un prénom et une date de naissance etc je me demande si je n'ai pas interet à faire une frame pour modifier tu comprends mieux là?