Execution SQL sous VBA

Execution SQL sous VBA - VB/VBA/VBS - Programmation

Marsh Posté le 02-05-2007 à 18:45:41    

Salut ! voila ça fait 5 heures que je bosse sur un petit projet pour mon BAC.
 
j'ai crée un formulaire login + mot de passe, je possède une base utilisateur avec 3champs ( Num, login, password)
le problème se pose dans le code.
 
 
 
Private Sub btn_connexion_Click()
 Dim db As DAO.Database
 Dim rst As DAO.Recordset
 Dim fld As DAO.Field
 Dim sSQL As String
 Dim login As String
 Dim pass As String
 
    'attribution valeurs
     
    login = [txt_login]
    pass = [txt_password]
     
    ' Ouverture de la base de données
    Set db = DBEngine.OpenDatabase("C:\Documents and Settings\DarkKnife\Bureau\appFormation.mdb" )
    Set rst = CurrentDb.OpenRecordSet("utilisateur" )
     sSQL = "Select num from utilisateur where login='" & Me.txt_login & "' And password='" & Me.txt_password & "'"
     
    ' Ouverture du recordset
    Set rst = db.OpenRecordSet(sSQL, dbOpenForwardOnly, dbReadOnly)
     
    'Conditionnel
     
    If sSQL <> "'" Then
    MsgBox ("Accés Autorisé '" & sSQL & "'" )
    End If
     
        If sSQL = "" Then
    MsgBox ("Accès Refusé" )
    End If
 
    ' Fermeture du Recordset
    rst.Close
End Sub
 
 
 
2 choses : - je me doute que les conditionnelles sont mauvaises !
               - le résultat de sSQL est : "Select num from utilisateur where login='" & Me.txt_login & "' And password='" & Me.txt_password & "'"
     
 ce qui veut dire qui n'a pas exécuter la requête !
 
J'espère que vous arriverez a m'aider et que j'ai était assez clair.

Reply

Marsh Posté le 02-05-2007 à 18:45:41   

Reply

Marsh Posté le 02-05-2007 à 21:41:50    

Le résultat se trouve dans rst, pas dans sSQL, qui ne contient que la requête.
Donc, après le OpenRecordSet, on récupère le contenu du champ par :

If (rst.EOF) Then
  MsgBox("Enregistremnet non trouvé" )
Else
   MsgBox("Le numero est :" & Cstr(rst!num) & "." )
End-If

N.B. J'ai supposé que le numéro était un nombre, et je l'ai converti en chaine par CStr() pour l'affichage uniquement.

Reply

Marsh Posté le 03-05-2007 à 22:10:39    

ok ! merci ça tiens la route !

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed