Aller au contenu
  • Pas encore inscrit ?

    Pourquoi ne pas vous inscrire ? C'est simple, rapide et gratuit.
    Pour en savoir plus, lisez Les avantages de l'inscription... et la Charte de Zébulon.
    De plus, les messages que vous postez en tant qu'invité restent invisibles tant qu'un modérateur ne les a pas validés. Inscrivez-vous, ce sera un gain de temps pour tout le monde, vous, les helpeurs et les modérateurs ! :wink:

[Résolu]VB.net + Access


Raphdu01

Messages recommandés

Bonjour

 

Je suis en train de programmer un petit jeu avec Visual Basic 2005 Express ou il faut se connecter pour pouvoir jouer. J'ai donc une base de données avec la table JOUEUR(numjou, pseudojou, mdpjou) où un nouvel utilisateur peut créer un compte via des inputbox(pseudo + mot de passe).

 

Le problème est que je veux empecher les doublons pour le pseudo

 

Voici le code que j'ai pour l'instant :

 

 Private Sub BtnNouveau_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnNouveau.Click
       'Ajout d'un joueur dans la base de donnée

       Dim cnn As New OleDbConnection
       Dim cmd As New OleDbCommand
       Dim drr As OleDbDataReader
       Dim existenreg As Boolean

       Dim pseudo As String
       Dim mdp As String
       Dim max As Integer

       max = 0

       pseudo = Trim(InputBox("Pseudo ?"))
       mdp = Trim(InputBox("Mot de passe ?"))

       cnn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" & Application.StartupPath & "\projet2.mdb" 'Microsoft.ACE.OLEDB.12.0
       cnn.Open()
       cmd.CommandText = "select pseudojou from joueur"
       cmd.Connection = cnn
       drr = cmd.ExecuteReader()
       existenreg = drr.Read

       While existenreg Or max = 0

           If drr("pseudojou") = pseudo Then
               MessageBox.Show("Saisir un autre pseudo")
               pseudo = Trim(InputBox("Pseudo ?"))

           Else

               max = 1
               drr.Close()
               cmd.CommandText = "insert into joueur(pseudojou, mdpjou) values('" & pseudo & "','" & mdp & "')"
               cmd.Connection = cnn
               cmd.ExecuteNonQuery()

               MessageBox.Show("Le joueur " & pseudo & " a été créé avec succès.", "", MessageBoxButtons.OK, MessageBoxIcon.Information)
               'BtnPartieSolo.Visible = True
               'BtnPartieMulti.Visible = True
               'BtnEnrJou.Visible = False
               'TxtPseudo.Visible = False
               'TxtMdp.Visible = False
               'BtnNouveau.Visible = False
               'Label1.Visible = False
               'Label2.Visible = False


           End If

       End While

       cnn.Close()

   End Sub

 

Ca fait tout ce que je veux (refuse un pseudo déjà existant, crée le joueur avec le nouveau pseudo) mais j'ai une erreur sur cette ligne :

 

If drr("pseudojou") = pseudo Then ->Aucune donnée n'existe pour la ligne/colonne.

 

Je ne comprend pas d'où elle peut venir car j'ai fait en sorte de quitter la boucle dès que le joueur a mis un pseudo valide..

 

N'hésitez pas à me demander pour plus d'explications..

 

J'espère que quelqu'un aura une idée

 

Merci d'avance a++

Modifié par Raphdu01
Lien vers le commentaire
Partager sur d’autres sites

Re

 

je vois que j'ai pas de réponse ça tombe bien parce que j'ai fait des modifications et ça e marche toujours pas mais cette fois je n'ai pas d'erreur ?!?!

 

Voila le travail :

 

  Private Sub BtnNouveau_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnNouveau.Click
       'Ajout d'un joueur dans la base de donnée

       Dim cnn As New OleDbConnection
       Dim cmd As New OleDbCommand
       Dim drr As OleDbDataReader
       Dim existenreg As Boolean

       Dim pseudo As String
       Dim mdp As String
       Dim max As Integer

       max = 0

       pseudo = Trim(InputBox("Pseudo (15 caractères maximum)"))

       While pseudo = "" Or Len(pseudo) > 15

           pseudo = Trim(InputBox("Pseudo (15 caractères maximum)"))

       End While

       mdp = Trim(InputBox("Mot de passe (6 caractères maximum)"))

       While mdp = "" Or Len(mdp) > 6

           mdp = Trim(InputBox("Mot de passe (6 caractères maximum)"))

       End While

       cnn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" & Application.StartupPath & "\projet2.mdb" 'Microsoft.ACE.OLEDB.12.0
       cnn.Open()
       cmd.CommandText = "select pseudojou from joueur where pseudojou='" & pseudo & "'"
       cmd.Connection = cnn
       drr = cmd.ExecuteReader()
       existenreg = drr.Read



       If existenreg = True Then

           MessageBox.Show("Saisir un autre pseudo")
           pseudo = Trim(InputBox("Pseudo (15 caractères maximum)"))

       End If

       drr.Close()
       cmd.CommandText = "insert into joueur(pseudojou, mdpjou) values('" & pseudo & "','" & mdp & "')"
       cmd.Connection = cnn
       cmd.ExecuteNonQuery()

       MessageBox.Show("Le joueur " & pseudo & " a été créé avec succès.", "", MessageBoxButtons.OK, MessageBoxIcon.Information)
       'BtnPartieSolo.Visible = True
       'BtnPartieMulti.Visible = True
       'BtnEnrJou.Visible = False
       'TxtPseudo.Visible = False
       'TxtMdp.Visible = False
       'BtnNouveau.Visible = False
       'Label1.Visible = False
       'Label2.Visible = False

       cnn.Close()

   End Sub

 

Bon courage pour ceux qui voudront lire ça..

 

a+++

 

édit : en fait ça marche donc problème [Résolu]

Modifié par Raphdu01
Lien vers le commentaire
Partager sur d’autres sites

Rejoindre la conversation

Vous pouvez publier maintenant et vous inscrire plus tard. Si vous avez un compte, connectez-vous maintenant pour publier avec votre compte.
Remarque : votre message nécessitera l’approbation d’un modérateur avant de pouvoir être visible.

Invité
Répondre à ce sujet…

×   Collé en tant que texte enrichi.   Coller en tant que texte brut à la place

  Seulement 75 émoticônes maximum sont autorisées.

×   Votre lien a été automatiquement intégré.   Afficher plutôt comme un lien

×   Votre contenu précédent a été rétabli.   Vider l’éditeur

×   Vous ne pouvez pas directement coller des images. Envoyez-les depuis votre ordinateur ou insérez-les depuis une URL.

  • En ligne récemment   0 membre est en ligne

    • Aucun utilisateur enregistré regarde cette page.
×
×
  • Créer...