stitch24
Messages postés9Date d'inscriptionsamedi 12 février 2005StatutMembreDernière intervention25 novembre 2005
-
19 nov. 2005 à 00:39
stitch24
Messages postés9Date d'inscriptionsamedi 12 février 2005StatutMembreDernière intervention25 novembre 2005
-
19 nov. 2005 à 14:37
(Débutante)
Voici ma programmation pour la vérification du login et du numéro de compte :
Option Explicit
Dim Login As String
Dim Compte As New ADODB.Recordset
Dim ResultCompte As New ADODB.Recordset
Dim Sql As New ADODB.Command
Dim BD As New ADODB.Connection
Public Function Vérification(ByVal NCompte As Integer, ByVal Login As String) As Boolean
Call OuvrirConnexion
Sql.ActiveConnection = BD
Sql.CommandText = " Select * From Comptes Where NumCompte='&NCompte&' and MotPasse='& Login &'"
Set ResultCompte = Sql.Execute
Vérification = Not Compte.EOF
Call FermerConnexion
End Function
Private Sub Cmd_Verif_Click()
Dim NCompte As Integer
NCompte = Val(Txt_NCompte.Text)
Login= Val(Txt_ Login.Text)
If Not IsNumeric(NCompte) Then
MsgBox " Veuillez rentrer un NUMERO de compte "
Else
If Vérification(NCompte, Login) Then
???
Else
MsgBox " Votre Numéro de Compte ou votre Mot de Passe est invalide "
End If
End If
End Sub
Et cela me donne toujours :
"Run-time error '-2147217913 (80040e07)':
Type de données incompatible dans l'expression du critère"
Qu'est ce qui ne vas pas ?
Pour les ??? je suis sur que ce que j'ai mis est faux mais ce sont des "cmd_" que deviennent active.
Merci beaucoup por votre aide !!!!
cs_Jack
Messages postés14006Date d'inscriptionsamedi 29 décembre 2001StatutModérateurDernière intervention28 août 201579 19 nov. 2005 à 01:20
Salut
Je ne sais pas sur quelle ligne il te génère cette erreur, mais voilà ce qui me saute aux yeux :
Sql.CommandText = " Select * From Comptes Where NumCompte='&NCompte&' and MotPasse='& Login &'"
Tu mélanges mal la syntaxe SQL et VB :
Après NumCompte, tu ouvres bien le ' pour désigner un texte (bizarre d'ailleurs pour un Num), mais tu ne refermes pas la syntaxe VB avant de mettre le & NCompte, donc la requète SQL devient, sans les " de VB :
Select * From Comptes Where NumCompte='&NCompte&' and MotPasse='& Login &'
Il te faut donc fermer la syntaxe VB avant de fournir le contenu de la variable :
Sql.CommandText " Select * From Comptes Where NumCompte '" & NCompte & "' and MotPasse = '" & Login & "'"
Remarque, donc : Si le champ NumCompte est déclaré comme un chiffre dans ta table, il ne faut pas mettre de ' après le =. Par contre, si NCompte est un chiffre, il est plus convenable de le transformer en chaine avant de l'inclure à la chaine de la requète SQL (avec CStr), ce qui donne :
Sql.CommandText " Select * From Comptes Where NumCompte " & CStr(NCompte) & " and MotPasse = '" & Login & "'"
Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés
Le savoir est la seule matière qui s'accroit quand on la partage. (Socrate)
PCPT
Messages postés13272Date d'inscriptionlundi 13 décembre 2004StatutMembreDernière intervention 3 février 201847 19 nov. 2005 à 01:21
"Txt_ Login.Text" ? tu arrives à mettre des espaces dans tes noms de contrôles????!!
félicitations ;)
et tu en reprends le VAL pour une string?
je n'ai pas regardé le reste... (pour cause)
bon courage
Vous n’avez pas trouvé la réponse que vous recherchez ?