Soy nuevo en VBA y estoy intentando hacer una agenda de contactos, la función de añadir contactos me da problemas....
Conecta correctamente con la base de datos que es una tabla Contactos que dentro tiene las columnas Nombre, Apellidos, etc...
El problema viene cuando lanza el comando, me da error de sintaxis en la instrucción INSERT INTO.
El siguiente textbox me indica Microsoft Jet Database Engine.
El siguiente textbox muestra lo siguiente: https://imgur.com/2oeyRmm
Y seguidamente me muestra este error: https://imgur.com/QBGnH2p
En los errores he recortado la ultima linea que indicaba mis rutas de acceso a la base de datos, por seguridad y privacidad...
Indica que el error está en la línea 30, que es el .cmd.ExecuteNonQuery()
Código
Imports System.Data Imports System.Data.OleDb Imports System.Data.SqlClient Public Class Actions Private Conection As New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=Agenda.mdb;") Private cmd As New OleDbCommand 'Esto es el proceso de creación de contactos Public Shared Sub SubAddContact() Dim classActions As New Actions() Try 'Aqui preparamos el comando y acto seguido lo lanzamos dentro de su Try correspondiente. With classActions .cmd.CommandText = "INSERT INTO Contactos ( Nombre, Apellidos, Dirección, Teléfono, Móvil, E-Mail, Comentarios ) VALUES (?,?,?,?,?,?,?)" .cmd.CommandType = CommandType.Text .cmd.Connection = .Conection 'Añadimos los parámetros al comando de inserción .cmd.Parameters.Add(New OleDb.OleDbParameter("Nombre", AddContact.TextBoxNombre.Text)) .cmd.Parameters.Add(New OleDb.OleDbParameter("Apellidos", AddContact.TextBoxApellidos.Text)) .cmd.Parameters.Add(New OleDb.OleDbParameter("Dirección", AddContact.TextBoxDireccion.Text)) .cmd.Parameters.Add(New OleDb.OleDbParameter("Teléfono", AddContact.TextBoxTelefono.Text)) .cmd.Parameters.Add(New OleDb.OleDbParameter("Móvil", AddContact.TextBoxMovil.Text)) .cmd.Parameters.Add(New OleDb.OleDbParameter("E-Mail", AddContact.TextBoxEmail.Text)) .cmd.Parameters.Add(New OleDb.OleDbParameter("Comentarios", AddContact.TextBoxComentarios.Text)) 'Abrimos la conexión .Conection.Open() MessageBox.Show("Se ha establecido conexión con la BDD.") 'Ejecutamos el comando y almacenamos resultado .cmd.ExecuteNonQuery() MessageBox.Show("Contacto creado correctamente!") 'Cerramos la conexión .Conection.Close() End With MessageBox.Show("Conexión cerrada!") Catch ex As Exception MessageBox.Show("Error al crear contacto! Igual ya existe?") MessageBox.Show(ex.Message) MessageBox.Show(ex.Source) MessageBox.Show(ex.StackTrace) MessageBox.Show(ex.ToString()) classActions.Conection.Close() End Try End Sub End Class
Saludos y mil gracias!