Probleme de comparaison entre saisie et champ de fichier

[Résolu]
Signaler
Messages postés
190
Date d'inscription
dimanche 10 avril 2005
Statut
Membre
Dernière intervention
4 juillet 2007
-
Messages postés
3140
Date d'inscription
vendredi 14 mai 2004
Statut
Membre
Dernière intervention
11 mars 2019
-
Bonjour
Je travaille avec visual basic 6 et j'essaye de comparer une saisie effectuée avec un inputbox et le champ d'un fichier.
Je vous montre le code ci dessous :

Private Sub DI_Click()


'Ouverture du fichier en Acces Direct
Open "NInscription.txt" For Random As #1 Len = Len(Inscription)
'Determine la longueur du fichier
longu = Len(Inscription)
taille = LOF(1)
nbe = LOF(1) / Len(Inscription)
' Saisie du Joueur
Joueur = InputBox("Saisir votre Pseudo", "Votre Pseudo")
x = 1
' Lecture de l'enregistrement
Get #1, x, Inscription
MsgBox (Joueur)
MsgBox (Inscription.Pseudo)
' correspondance joueur et pseudo inscription
If Joueur = Inscription.Pseudo Then
correspondancej = True
Else
While Joueur <> Inscription.Pseudo And x <= nbe
x = x + 1
' Lecture de l'enregistrement suivant
Get #1, x, Inscription
Wend
End If
If x > nbe Then
res = MsgBox("Votre Pseudo n'est pas connu de notre fichier", vbExclamation)
End If
' correspondance mot de passe saisie et mot de passe inscription
motdepasse = InputBox("Saisir votre Mode de Passe", "Mot de Passe")
' Lecture de l'enregistrement
Get #1, x, Inscription
If motdepasse = Inscription.mdp Then
correspondancem = True
Else
While motdepasse <> Inscription.mdp And x <= nbe
x = x + 1
'Lecture de l'enregistrement suivant
Get #1, x, Inscription
Wend
End If
If x > nbe Then
res = MsgBox("Votre Mot de passe est incorrecte", vbExclamation)
End If
MsgBox (correspondancej)
MsgBox (correspondancem)
Close #1
'Correspondance des deux champs avec un enregistrementIf correspondancej True And correspondancem True Then
Load Form1
Form1.Show
End If
End Sub

Si la saisie est correcte, il est censé indiquer des valeurs vraies pour les correspondances et si les 2 sont vraies m'ouvrir une autre feuille.
Mais il me repond toujours que le pseudo et le mdp sont incorrecte et donc il me renvoie tjrs pour les 2 correspondances des valeurs fausses.
Quelqu'un aurait il une solution ?

Merci d'Avance
Maiku

19 réponses

Messages postés
3140
Date d'inscription
vendredi 14 mai 2004
Statut
Membre
Dernière intervention
11 mars 2019
29
c'est une bonne chose de faite !
il y a plus qu'à désinfecter et mettre un petit pansement par dessus, j'espère que ça a pas trop saigné (lol)

penses à cocher réponse acceptée.

@+ et bonne prog

Daniel
3
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 70 internautes nous ont dit merci ce mois-ci

Messages postés
1788
Date d'inscription
mardi 7 novembre 2000
Statut
Membre
Dernière intervention
11 mars 2006
26
Je voudrais bien essayer ton code, mais je n'ai que des erreurs.
Dans ton code, aucune variable n'est déclarée (longu, taille, joueur, Inscription ext...

jpleroisse.
Messages postés
190
Date d'inscription
dimanche 10 avril 2005
Statut
Membre
Dernière intervention
4 juillet 2007

Lut


Vi excuse moi toutes ces données sont dans mon module, le voici :

Option Explicit
Type Fscore
Place As Integer
PseudoJ As String
score As Integer
Date As Date
End Type
Public score As Fscore
Type Finscritption
Numero As Integer
Nom As String * 30
Prenom As String * 30
F As String * 1
H As String * 1
Feminin As String * 15
Masculin As String * 15
Pseudo As String * 10
email As String * 40
mdp As String * 8
cmdp As String * 8
rue As String * 50
cp As Long
ville As String * 30
pays As String * 15
End Type
Type Fem
NumF As Integer
PrenomF As String * 15
End Type
Public FFem As Fem
Type Mas
NumM As Integer
PrenomM As String * 15
End Type
Public FMas As Mas
Public Inscription As Finscritption
Public Joueur As String
Public longu As Integer
Public taille As Long
Public nbe As Long
Public res As String
Public gaintot As Integer
Sub Main()
Load Form3
Form3.Show
End Sub

Voila si tu avais un solution par hasard a propos de mon prob ??
Merci d'avance
Maiku
Messages postés
1788
Date d'inscription
mardi 7 novembre 2000
Statut
Membre
Dernière intervention
11 mars 2006
26
J'ai avancé un peu, mais je bloque sur le mot de passe qu'il demande ?
Comment fonctionne exactement ton pgr (combien de Form ect..)
Messages postés
190
Date d'inscription
dimanche 10 avril 2005
Statut
Membre
Dernière intervention
4 juillet 2007

Lut

En fait il s'agit d'un Loto a gratter qui contient 3 form et un module :
la 1ere form propose si l'on est deja inscrit a ce jeu de joueur directement en entrant son pseudo et son mot de passe dont mon probleme de comparaison ou alors de faire son inscription en tant que nouveau joueur ou alors de quitter.
la 2eme form est le formulaire d'inscription pour celui qui est nouveau joueur et qui veut s'inscrire alors ces données s'enregistre dans un fichier a partir duquel je peux effectuer mes comparaison.
la 3eme form s'agit tout simplement du loto a gratter en lui même avec le joueur qui a été saisie ave calcul des gains etc.

Si il te faut d'autres precisions dis le moi.
Merci d'avance
Maiku
Messages postés
1788
Date d'inscription
mardi 7 novembre 2000
Statut
Membre
Dernière intervention
11 mars 2006
26
OK pour l'instant mon pseudo est reconnu, reste le problème du mot de passe ?
Qu'est ce que nbe signifie et Inscription.mdp?
Messages postés
190
Date d'inscription
dimanche 10 avril 2005
Statut
Membre
Dernière intervention
4 juillet 2007

Alors nbe c'est equivalent au numero d'enregistrement dans le fichier
et Inscription.mdp c'est le mot de passe qui a été enregistré dans l'enregistrement du fichier lors de l'inscription du nouveau joueur.

Maiku
Messages postés
1788
Date d'inscription
mardi 7 novembre 2000
Statut
Membre
Dernière intervention
11 mars 2006
26
2 questions avant le souper,
1> dans quel ordre tes forms apparaissent-elles ?
2> j'ai bien compris que Inscription.mdb était l'inscription du Mdp ,mais comment est-ce inscrit dans le fichier NIncription pour que la pgr le reconnaisse ? car quand tu fais OK dans la InputBox, il faut bien qu'il identifie le mdp .
Messages postés
190
Date d'inscription
dimanche 10 avril 2005
Statut
Membre
Dernière intervention
4 juillet 2007

Alors

La 1ere form qui apparait c'est celle qui propose : deja inscrit, nouvelle inscription ou quitter.
Ensuite si tu choisi nouvelle inscription c'est la form qui concerne l'enregistrement de l'inscription dans un fichier qui apparait, si tu choisi deja inscrit alors il te demande ton pseudo et ton mot de passe et s'il correspondent alors la 3eme form celle du grattage du ticket apparait.
L'inscription se fait avec un fichier ouvert en Acces Direct sur le canal 1 , c'est comme un formulaire et chaque fois que tu fais enregistrer il verifie qu'aucun des champs ne soit vierge puis il enregistre dans un fichier texte les elements de ton inscription dans un enregistrement.
Quand tu clique sur deja inscrit : il doit faire la comparaison entre le pseudo et le mot de passe que tu as saisie avec le pseudo et le mot de passe qui sont dans le fichier inscription, donc il lit les fichiers un a un jusqu'a ce qu'il trouve une correspondance.

Maiku
Messages postés
1788
Date d'inscription
mardi 7 novembre 2000
Statut
Membre
Dernière intervention
11 mars 2006
26
Suis complètement planté, je vais créé un pgr suivant tes données, te tient au courant.
Messages postés
190
Date d'inscription
dimanche 10 avril 2005
Statut
Membre
Dernière intervention
4 juillet 2007

Ok
En fait si tu veux le seul prob c'est qu'il refuse de comparer le pseudo saisie avec le pseudo du fichier alors que les deux correspondent.
Il fait comme si il n'entrait pas dans le si Pseudo = Inscription.Pseudo alors ....
Il passe directement à tant qu'il est différent.

Maiku
Messages postés
3140
Date d'inscription
vendredi 14 mai 2004
Statut
Membre
Dernière intervention
11 mars 2019
29
t'as pas répété le test pour mettre correspondancej à True dans le Else, donc il reste à False, sauf si c'est le premier. idem pour correspondancem.

essayes plutôt comme ça:

For x = 1 To nbe
Get #1, x, inscription
If Joueur = inscription.Pseudo Then
correspondancej = True
Exit For
End If
Next
If correspondancej = False Then
MsgBox "Votre Pseudo n'est pas connu de notre fichier", vbExclamation
End If

Daniel
Messages postés
190
Date d'inscription
dimanche 10 avril 2005
Statut
Membre
Dernière intervention
4 juillet 2007

Lut

J'ai essayé ce que tu as dit bien que je n'ai pas compris ce que ca changeait, mais le probleme reste le même il me dit toujours que le pseudo et le mot de passe sont inconnus du fichier alors que l'enregistrement existe bel bien.
Pourrait tu m'expliquer un peu plus en détails ce que ton code differait du mien car je n'ai pas bien saisi.
Sinon j'ai toujours le même prob en sachant que j'ai modifié certaine chose que maintenant je n'utilise plus d'inputbox mais un text box present dans un autre formulaire car dans un inputbox je ne pouvais crypter le mot de passe avec de "*".
Donc j'ai adapter ton code en fonction des modifications mais je ne suis pas plus avancé pour le moment.

Merci
Maiku
Messages postés
3140
Date d'inscription
vendredi 14 mai 2004
Statut
Membre
Dernière intervention
11 mars 2019
29
est-ce que tu rentre bien le pseudo sur 10 caractères et le mot de passe sur 8 caractères, les espaces comptent, la casse aussi ,
sinon:
If Joueur = Left$(inscription.Pseudo,Len(joueur)) then ...

autre chose:
lorsque tu vérifie le mot de passe, il faut le prendre sur le même enregistrement et pas aller chercher le mot de passe d'un autre.

Daniel
Messages postés
190
Date d'inscription
dimanche 10 avril 2005
Statut
Membre
Dernière intervention
4 juillet 2007

Je me sert d'un enregistrement où le pseud est Maiku donc pas de prob de taille, il n'y a pas d'espace et le mot de passe fait 6 caractères.
Après adaptation de ton code voila ce que ca donne si je me suis pas trompé :
'Ouverture du fichier en Acces Direct
Open "NInscription.txt" For Random As #1 Len = Len(Inscription)
'Determine la longueur du fichier
longu = Len(Inscription)
taille = LOF(1)
nbe = LOF(1) / Len(Inscription)
For X = 1 To nbe
Get #1, X, Inscription
MsgBox (Joueur.Text)
MsgBox (Inscription.Pseudo)
If Joueur.Text = Inscription.Pseudo Then
correspondancej = True
MsgBox ("Pseudo trouvé")
End If
If motdepasse.Text = Inscription.mdp Then
correspondancem = True
End If
'Correspondance des deux champs avec un enregistrementIf correspondancej True And correspondancem True Then
Exit For
Load Form4
Form4.Show
End If
Next
If correspondancej = False Then
MsgBox "Votre Pseudo n'est pas connu de notre fichier", vbExclamation
End If
If correspondancem = False Then
MsgBox "Votre Mot de Passe n'est pas connu de notre fichier", vbExclamation
End If
Close #1
End Sub

Mais il refuse toujours de reconnaître que la comparaison est bonne entre le fichier et le textbox.

Maiku
Messages postés
3140
Date d'inscription
vendredi 14 mai 2004
Statut
Membre
Dernière intervention
11 mars 2019
29
Type Finscritption
Numero As Integer
Nom As String * 30
Prenom As String * 30
F As String * 1
H As String * 1
Feminin As String * 15
Masculin As String * 15

Pseudo As String * 10
email As String * 40
mdp As String * 8
cmdp As String * 8
rue As String * 50
cp As Long
ville As String * 30
pays As String * 15
End Type

ça peut pas marcher "maiku" n'est pas égal à "maiku "

If Joueur.Text = RTrim$(inscription.Pseudo) Then ...
If motdepasse.Text = RTrim$(Inscription.mdp) Then ...

Daniel
Messages postés
190
Date d'inscription
dimanche 10 avril 2005
Statut
Membre
Dernière intervention
4 juillet 2007

ReLut

Si je dis string * 8 ca veut dire obligatoirement 8 lettres pour comparer donc ?
Ton Code RTim$ qu'est ce qu'il veut dire je ne l'ai jamais encore vu ?

Merci
Maiku
Messages postés
3140
Date d'inscription
vendredi 14 mai 2004
Statut
Membre
Dernière intervention
11 mars 2019
29
oui exactement 8 caractères obligatoires.
donc complétés par des blancs.
Rtrim$() ça enlève les espaces de fin, comme ça si t'as "maiku " dans le fichier, tu va comparer avec RTim$("maiku ") qui devient "maiku" et ça devrait être bon.

LTrim$() ça enlève les espaces du début.
et Trim$() ça fait les deux.

Daniel
Messages postés
190
Date d'inscription
dimanche 10 avril 2005
Statut
Membre
Dernière intervention
4 juillet 2007

ReBonjour

Je te dois un grand merci tu m'as enlevé une sacrée epine du pied c'etait bien la la solution.
Maintenant ca marche!!
Encore Merci.

Emilie Alias Maiku