Buenas! :)
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()
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! ;) ;) ;)
Solucionado, el problema es de E-Mail , el "-" da problemas, hay que ponerlo entre []