Error sintaxis INSERT INTO

Iniciado por kuhi, 18 Octubre 2017, 18:33 PM

0 Miembros y 1 Visitante están viendo este tema.

kuhi

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()

Código (vbnet) [Seleccionar]
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!  ;) ;) ;)
El conocimiento no ocupa lugar, somos libres de saber cuánto queramos...

kuhi

Solucionado, el problema es de E-Mail , el "-" da problemas, hay que ponerlo entre []
El conocimiento no ocupa lugar, somos libres de saber cuánto queramos...