Foro de elhacker.net

Programación => .NET (C#, VB.NET, ASP) => Mensaje iniciado por: kuhi en 18 Octubre 2017, 18:33 pm



Título: Error sintaxis INSERT INTO
Publicado por: kuhi en 18 Octubre 2017, 18:33 pm
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
  1. Imports System.Data
  2. Imports System.Data.OleDb
  3. Imports System.Data.SqlClient
  4.  
  5. Public Class Actions
  6.    Private Conection As New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=Agenda.mdb;")
  7.    Private cmd As New OleDbCommand
  8.  
  9.    'Esto es el proceso de creación de contactos
  10.    Public Shared Sub SubAddContact()
  11.        Dim classActions As New Actions()
  12.        Try
  13.            'Aqui preparamos el comando y acto seguido lo lanzamos dentro de su Try correspondiente.
  14.            With classActions
  15.                .cmd.CommandText = "INSERT INTO Contactos ( Nombre, Apellidos, Dirección, Teléfono, Móvil, E-Mail, Comentarios ) VALUES (?,?,?,?,?,?,?)"
  16.                .cmd.CommandType = CommandType.Text
  17.                .cmd.Connection = .Conection
  18.                'Añadimos los parámetros al comando de inserción
  19.                .cmd.Parameters.Add(New OleDb.OleDbParameter("Nombre", AddContact.TextBoxNombre.Text))
  20.                .cmd.Parameters.Add(New OleDb.OleDbParameter("Apellidos", AddContact.TextBoxApellidos.Text))
  21.                .cmd.Parameters.Add(New OleDb.OleDbParameter("Dirección", AddContact.TextBoxDireccion.Text))
  22.                .cmd.Parameters.Add(New OleDb.OleDbParameter("Teléfono", AddContact.TextBoxTelefono.Text))
  23.                .cmd.Parameters.Add(New OleDb.OleDbParameter("Móvil", AddContact.TextBoxMovil.Text))
  24.                .cmd.Parameters.Add(New OleDb.OleDbParameter("E-Mail", AddContact.TextBoxEmail.Text))
  25.                .cmd.Parameters.Add(New OleDb.OleDbParameter("Comentarios", AddContact.TextBoxComentarios.Text))
  26.                'Abrimos la conexión
  27.                .Conection.Open()
  28.                MessageBox.Show("Se ha establecido conexión con la BDD.")
  29.                'Ejecutamos el comando y almacenamos resultado
  30.                .cmd.ExecuteNonQuery()
  31.                MessageBox.Show("Contacto creado correctamente!")
  32.                'Cerramos la conexión
  33.                .Conection.Close()
  34.            End With
  35.            MessageBox.Show("Conexión cerrada!")
  36.        Catch ex As Exception
  37.            MessageBox.Show("Error al crear contacto! Igual ya existe?")
  38.            MessageBox.Show(ex.Message)
  39.            MessageBox.Show(ex.Source)
  40.            MessageBox.Show(ex.StackTrace)
  41.            MessageBox.Show(ex.ToString())
  42.            classActions.Conection.Close()
  43.        End Try
  44.    End Sub
  45. End Class

Saludos y mil gracias!  ;) ;) ;)


Título: Re: Error sintaxis INSERT INTO
Publicado por: kuhi en 18 Octubre 2017, 21:08 pm
Solucionado, el problema es de E-Mail , el "-" da problemas, hay que ponerlo entre []