J'ai une base de données ms-access appelée db.mdb et elle contient diverses tables. Je crée une page de création de compte avec ASP.NET et VB.NET.ASP.NET - Entrée VB.NET dans MS-ACCESS avec auto-incrémentation
J'essaie d'entrer des champs dans la page dans ms-acess db mais quand j'ouvre la base de données, il n'y a pas de valeurs entrées malgré que le développement web ne montre aucune erreur.
Pouvez-vous m'aider?
Voici le code:
Imports System.Data
Imports System.Data.OleDb
Imports System.Data.Odbc
Partial Class _Default
Inherits System.Web.UI.Page
Protected Sub TextBox1_TextChanged(sender As Object, e As System.EventArgs) Handles txtName.TextChanged
End Sub
Protected Sub btnCreateAccount_Click(sender As Object, e As System.EventArgs) Handles btnCreateAccount.Click
Dim conn As New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Users\Brian\Documents\Visual Studio 2010\WebSites\WebSite3\db.mdb;User Id=admin;Password=;")
Dim cmd As OleDbCommand = New OleDbCommand("INSERT INTO [USER] (UserName, UserSurname, Address, Country, TelNo, UserLogin, UserPassword, UserTypeID) VALUES (?, ?, ?, ?, ?, ?, ?, ?)", conn)
If txtPass.Text = txtCPass.Text Then
conn.Open()
cmd.Parameters.Add("@UserName", OleDbType.VarChar, 255).Value = txtName.Text
cmd.Parameters.Add("@UserSurname", OleDbType.VarChar, 255).Value = txtSurname.Text
cmd.Parameters.Add("@Address", OleDbType.VarChar, 255).Value = txtUsername.Text
cmd.Parameters.Add("@Country", OleDbType.VarChar, 255).Value = txtCountry.Text
cmd.Parameters.Add("@TelNo", OleDbType.Integer).Value = txtTelNo.Text
cmd.Parameters.Add("@UserLogin", OleDbType.VarChar, 255).Value = txtUsername.Text
cmd.Parameters.Add("@UserPassword", OleDbType.VarChar, 255).Value = txtPass.Text
cmd.Parameters.Add("@UserTypeID", OleDbType.VarChar, 255).Value = "U"
cmd.ExecuteNonQuery()
conn.Close()
lblAccount.Visible = True
End If
End Sub
End Class
EDIT:
Je suis en train de autonumber le champ UserID. Il est défini comme numéro automatique de la base de données d'accès. Chaque fois que j'essaie d'entrer les détails dans la page de la page, cela ne me le permet pas, me donnant une erreur que le champ NuméroAuto ne peut pas être NULL. Donc, j'ai ajouté le morceau de code:
newID = Int32.Parse(cmd2.ExecuteScalar()) + 1
Alors que je reçois le nombre maximum de cette colonne dans la table et l'incrément par 1, puis ajouté avec l'autre commande.
cmd.Parameters.Add("@UserID", OleDbType.VarChar, 255).Value = newID
Cependant, sa me donne une erreur disant
Conversion from type 'DBNull' to type 'String' is not valid.
ahh ok merci. mais maintenant il me donne une nouvelle erreur dans cette ligne 'Dim cmd2 As OleDbCommand = Nouvelle OleDbCommand (" SELECT MAX (UserID) FROM UTILISATEUR ", conn)' disant theres une erreur dans le 'FROM' – Brian
Essayez - SELECT MAX (UserID) DE [UTILISATEUR] –
Merci .. chaque problème semble conduire à un autre cependant. J'ai mis à jour la question avec la nouvelle erreur – Brian