ADO Requête 2 [VB6]

Signaler
Messages postés
60
Date d'inscription
mercredi 3 janvier 2007
Statut
Membre
Dernière intervention
27 février 2009
-
Messages postés
4822
Date d'inscription
lundi 11 novembre 2002
Statut
Membre
Dernière intervention
15 novembre 2016
-
Bonjour,

Soit:
Base : Gestion.mdb
Table : Utilisateur(Numero,Login, Nom, Prenom)

J'ai créé une form pour créer un utilisateur. Je voudrais lui dire que si le champ 'Login' est déjà existant, eh bien me le dire sous forme d'un msgbox.

Merci de votre aide

Daniel E.

6 réponses

Messages postés
3983
Date d'inscription
jeudi 14 juillet 2005
Statut
Membre
Dernière intervention
30 juin 2013
14
Tu remplaces simplement txt_Login par le nom de ton champ et cmd_AddUser par le nom de ton bouton ...






Private Sub

cmd_AddUser()
Dim rs As New ADODB.Recordset
Dim SQL As String
SQL = "SELECT * FROM Utilisateur WHERE Login='" & Pure(Me.txt_Login.Text) & "';"
Set rs = Conn.Execute(SQL)
If Not (rs.EOF) Then
 MsgBox "L'utilisateur '" & Me.txt_Login.Text & "' existe déjà !!", vbExclamation, "Erreur"
 Me.txt_Login.Text = ""
 Me.txt_Login.SetFocus
End If
rs.Close
Set rs = Nothing
End Sub<hr />
Public Function Pure(S As String) As String
Pure = Replace(S, "'", "''")
End Function<hr />,

----

By Renfield




_______________________________________________________________________


VB.NET
is good ...
VB6
is better <f></f>
Messages postés
60
Date d'inscription
mercredi 3 janvier 2007
Statut
Membre
Dernière intervention
27 février 2009

ça ne marche pas.
C'est quoi  "conn" de "conn.Execute (SQL)"
As-tu ouvert la base avant ?

Daniel E.
Messages postés
4822
Date d'inscription
lundi 11 novembre 2002
Statut
Membre
Dernière intervention
15 novembre 2016
14
Salut,

Kirikou n'est pas grand, mais il est vaillant....Kirikou est petit, mais il est gentil....

Bon..bon j'arrête....Ok !

"Conn" est le nom donné à ton objet de connection à ta base...

Regarde une de mes sources(Quick_Exp), j'ai fait une partit "Options Users", tu peux t'en servir pour t'aider à faire ce que tu désires, en complément de la réponse de ghuysmans99(Salut)....

NOTE : Toujours pas reçu ta source.....!!

A+
Exploreur

 Linux a un noyau, Windows un pépin

 
Messages postés
60
Date d'inscription
mercredi 3 janvier 2007
Statut
Membre
Dernière intervention
27 février 2009

Explorateur, je n'ai pas trouvé ta source (Quick_Exp)
Peux-tu me l'envoyer par mail stp ?

Merci

Note : Oui kirikou n'est pas grand, il est encore petit dans VB6, je débute
Pour ma source, je t'avais répondu : j'avais trouvé la solution.
Daniel E.
Messages postés
60
Date d'inscription
mercredi 3 janvier 2007
Statut
Membre
Dernière intervention
27 février 2009

Private Sub cmdrec_Click()



If txtnom "" Or txtprenom "" Or txtmdp = "" Or txtmdp2 = "" Or txtlogin = "" Or txtadmin = "" Then
MsgBox ("Veuillez remplir les champs obligatoires"), vbCritical, "Maranatha"
txtnom.SetFocus



ElseIf txtmdp.Text <> txtmdp2.Text Then
MsgBox ("Le champ Mot de passe est différent de la confirmation")



ElseIf


Dim cnx As ADODB.Connection
Dim SQL As String
Dim res As ADODB.Recordset



Set cnx = New ADODB.Connection
cnx.ConnectionString = "Chemin\base.mdb"
cnx.Provider = "Microsoft.jet.OLEDB.4.0"
cnx.Open



Set res = New ADODB.Recordset



res.Open "select * from Utilisateur", cnx, adOpenDynamic, adLockPessimistic
SQL = "INSERT INTO Utilisateur(Numero, Nom, Prenom, Passe, Login, Email)" & _
"Values('" & txtnum.Text & "', '" & txtnom.Text & "', '" & txtprenom.Text & "', '" & txtmdp.Text & "', '" & txtlogin.Text & "', '" & txtmail.Text & "')"



cnx.Execute SQL
Timer1.Enabled = True
P1.Visible = True
res.Close
cnx.Close
Else



MsgBox ("Mot de passe Administrateur erroné"), vbCritical, "Attention !"
txtadmin.SetFocus



End If
End Sub



Où devrais-je insérer le code pour la vérification de login existant ?
Ce code fonctionne mais m'envoit un message d'erreur lorsque le login est en doublant

Pour précision



Daniel E.
Messages postés
4822
Date d'inscription
lundi 11 novembre 2002
Statut
Membre
Dernière intervention
15 novembre 2016
14
Salut,

Essaye cela :

Ajoute à ton projet la référence :
Microsoft ActiveX Data Objects 2.5 Library

Private Sub cmdrec_Click()


If txtnom "" Or txtprenom "" Or txtmdp = "" Or txtmdp2 = "" Or txtlogin = "" Or txtadmin = "" Then
   MsgBox ("Veuillez remplir les champs obligatoires"), vbCritical, "Maranatha"
   txtnom.SetFocus
   Exit Sub
End If


If txtmdp.Text <> txtmdp2.Text Then
   MsgBox ("Le champ Mot de passe est différent de la confirmation")
   Exit Sub
End If


' Déclaration
 Dim Cnx As New ADODB.Connection
 Dim Res As New ADODB.Recordset
 Dim SQL As String
 Dim Msg As String


  ' Chemin base
   Cnx.ConnectionString = "Chemin\base.mdb"
  ' Pilote
   Cnx.Provider = "Microsoft.jet.OLEDB.4.0"
  ' Ouverture base
   Cnx.Open


' Préparation requête
 SQL = "SELECT * FROM Utilisateur"
 
  ' Exécution requête
   Cnx.Execute SQL
  
  ' On vérifie s'il y a des records
   If Res.RecordCount > 0 Then
  
      ' Boucle sur les records
       While Not Res.EOF
      
           If txtlogin.Text = Res.Fields("Login") Then
              ' Définition message de la boite
              Msg = "Login existant dans la base !" & vbCrLf & _
                    "Veuillez en saisir un nouveau." & vbCrLf & vbCrLf
              ' Affichage
              MsgBox Msg, vbOKOnly Or vbCritical, "Attention !"
             
              ' Init
               txtlogin.Text = vbNullString
               txtlogin.SetFocus
              
              ' On sort
               Exit Sub
              
           Else
          
              ' Passe au suivant
               Res.MoveNext
              
           End If
          
       Wend
          
   End If


    On Error Resume Next
        '  Libération ressource
         Res.Cancel
         Res.Close
        Set Res = Nothing
        Cnx.Cancel
        Cnx.Close
        Set Cnx = Nothing
   Err.Clear


End Sub


A+
Exploreur

 Linux a un noyau, Windows un pépin