Type de données incompatible dans l'expression des critères. MS Access VB
Touche ' OK
Private Sub OK_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles OK.Click
Dim con As New OleDbConnection("Provider=Microsoft.jet.oledb.4.0;data source=C:\Users\Jill\Desktop\saddbase\Sadsystem\Sadsystem\bin\Debug\tenant.mdb")
Dim cmd As OleDbCommand = New OleDbCommand("SELECT * FROM info WHERE TN_ID = '" & UsernameTextBox.Text & "' AND Password = '" & PasswordTextBox.Text & "' ", con)
con.Open()
Dim sdr As OleDbDataReader = cmd.ExecuteReader()
' If the record can be queried, Pass verification and open another form.
If (sdr.Read() = True) Then
MessageBox.Show("The user is valid!")
Me.Hide()
Else
MessageBox.Show("Invalid Tenant ID or password!")
End If
Quand je lance le programme il y a une erreur dans la commande cmd.ExecuteReader(). Type de données incompatible dans l'expression des critères s'il vous plaît aider comment réparer cette erreur.
Vous devez vous connecter pour publier un commentaire.
Dans votre requête, vous passez deux chaînes pour la TN_ID et les champs de Mot de passe.
Probablement le TN_ID est un champ numérique et vous n'avez pas besoin de mettre des guillemets autour d'elle et que je trouve vraiment étrange que vous passer la valeur d'une zone de texte nom d'utilisateur.
Dit, je tiens à examiner votre requête, car il y a des problèmes potentiels que vous n'avez pas vu:
Tout d'abord le MOT de passe est un mot Clé réservé et vous devez donc utiliser des Crochets autour d'elle.
Deuxièmement, ne pas utiliser la concaténation de chaîne de construire des commandes sql mais l'utilisation d'une requête paramétrée comme ce
Comme une note de côté, ne sont pas liées à votre problème, pensez également à ne PAS stocker le mot de passe en texte clair dans la base de données. Il y a des techniques de HACHAGE du mot de passe de texte et de stocker le résultat dans la base de données. De cette façon, personne ne peut entrer le mot de passe il vous suffit de consulter le fichier de base de données. Voir les détails dans cette question