Pb SQL vb access 2007

Fermé
rocklivedidi - Modifié par rocklivedidi le 24/12/2010 à 11:53
jopoiss Messages postés 104 Date d'inscription lundi 2 juin 2008 Statut Membre Dernière intervention 7 janvier 2011 - 7 janv. 2011 à 17:14
Bonjour,



J'ai écrit ce code dans VBA où:
- "conducteur" est une table avec "Email" et "Mot de passe" comme deux des champs de cette table;
- "Identification" est un formulaire avec "email" et "mdp" des zones de texte

J'aimerais que ce code me permette de vérifier que l'utilisateur est déjà inscrit. C'est un test. C'est pourquoi je ne passe pas par une requête.

Cependant, mon code ne fonctionne pas, j'ai utilisé une Msgbox pr vérifier le fonctionnement mais il me retourne "SELECT [...] [mdp]))" et non le résultat de cette fonction.

Private Sub ins_Click()
Dim base As DAO.Database
Set base = CurrentDb()
Dim sql_serial
sql_serial = "SELECT E-mail, Mot de passe FROM Conducteur WHERE (((Conducteur.[E-mail])=[Formulaires]![Identification]![email]) AND ((Conducteur.[Mot de passe])=[Formulaires]![Identification]![mdp]))"
MsgBox (sql_serial)
End Sub


Je vous remercie!


Adrienne
A voir également:

4 réponses

Skeletyon Messages postés 1552 Date d'inscription jeudi 20 novembre 2008 Statut Membre Dernière intervention 30 décembre 2013 156
24 déc. 2010 à 11:56
Bonjour,
Ta variable sql_serial si tu fais que l'afficher, il est normal que ça ne fasse que te l'afficher.

Il faut que tu traite cette variable.

Ca fait longtemps que j'ai pas fait de VB donc je veux pas dire de connerie sur du code...

Si j'ai le temps je te retrouve ça sur mon ordi ce soir :=)
0
rocklivedidi
24 déc. 2010 à 12:01
Oui mais normalement il aurait fallu que, dans ma Msgbox s'écrive le résultat de la fonction "SELECT..." et non pas la fonction proprement dite. Non?
0
Skeletyon Messages postés 1552 Date d'inscription jeudi 20 novembre 2008 Statut Membre Dernière intervention 30 décembre 2013 156
24 déc. 2010 à 12:14
Oui, ton objectif est bien d'écrire le résultat de ta requête.

Par contre je peux déjà te dire qu'il faut que tu fasses un count des personnes qui ont ce pseudo.
Si la nombre est à 1, l'utilisateur est inscrit, sinon, on insère.

J'ai exactement ça à la maison sur mon portable, si tu es patient et que personne ne te donne la solution d'ici là ^^

En plus je me souviens que c'est très bête, mais je suis sur du PHP en ce moment et même si c'est similaire, c'est pas la même chose.
0
rocklivedidi
24 déc. 2010 à 12:42
OK, oui je serai patiente! Je pense bien que la solution est bête mais il suffit de sa pour m'empêcher de travailler sur la suite de mon projet ^^ C'est d'autant plus frustrant.
J'attends votre réponse avec impatience!

Merci
0
rocklive.didi Messages postés 3 Date d'inscription samedi 1 janvier 2011 Statut Membre Dernière intervention 2 janvier 2011
2 janv. 2011 à 11:00
Bonjour,avez vous toujours la reponse? Merci
0
jopoiss Messages postés 104 Date d'inscription lundi 2 juin 2008 Statut Membre Dernière intervention 7 janvier 2011 16
2 janv. 2011 à 18:47
Bonjour,
c'est pas ça que tu cherches par hasard :

Dim rs As dao.Recordset
Dim requete As String

Set rs = CurrentDb.OpenRecordset(sql_serial)
If rs.RecordCount = 0 Then
     requete = "INSERT INTO ..."
Else
     requete = "UPDATE ..."
End If

DoCmd.RunSQL (requete)
0
Skeletyon Messages postés 1552 Date d'inscription jeudi 20 novembre 2008 Statut Membre Dernière intervention 30 décembre 2013 156
3 janv. 2011 à 11:03
j'ai retrouvé mon bout de code! *c'est que je l'ai cherché ce con -_-*

Je pense que le code jopoiss est correct et doit fonctionner ;)

Dim strsql As String = String.empty
strSQL = "SELECT count(NomAbonne) FROM Abonnes WHERE NomAbonne ='" + NomAbonne + "' "
Dim objcommand As New Oledb.OleDbCommand(strSQL, MyConnexion)

objcommand.ConnectionOpen ()
objcommand.ExecuteNonQuery()

Dim strResultat as Integer = objcommand.ExecuteScalar()

If (strResultat = 0) then 'Le nom n'est pas inséré, on eécute
...
...
End If


Si tu as besoin de commentaires je peux en fournir, mais à part le OleDb qui est fonction de ce que tu utilises comme base et driver ODBC toussah, y'a pas de difficultés particulières.

En espérant que ça t'aide et en me pardonnant du temps que cela a pris. oO

Bonne année! xD
0
rocklive.didi
4 janv. 2011 à 14:02
Rebonjour,

J'ai essayé sous une autre forme, cependant je rencontre toujours un problème avec le "db.OpenRecordset(sql_serial, dbOpenDynaset)".

Voici mon code:

Private Sub valider_Click()


Dim rs As DAO.Recordset
Dim requete As String
Dim db As DAO.Database
Dim Qry As DAO.QueryDef


Set db = CurrentDb()

sql_serial = "SELECT Email, Motdepasse FROM Conducteur WHERE (((Conducteur.[Email])=[Formulaires]![Identification]![email]) AND ((Conducteur.[Motdepasse])=[Formulaires]![Identification]![mdp]))"

Set rs = db.OpenRecordset(sql_serial, dbOpenDynaset)

End Sub

Tout d'abord savez vous comment cette fonction fonctionne? Et avez vous une idée pour régler cette erreur?

Merci à tous!!


Adrienne
0
jopoiss Messages postés 104 Date d'inscription lundi 2 juin 2008 Statut Membre Dernière intervention 7 janvier 2011 16
7 janv. 2011 à 17:14
Bonjour,

Peux-tu donner plus de précisions sur l'erreur?
0