Ver Mensaje Individual
  #1 (permalink)  
Antiguo 05/08/2009, 12:54
Busy
 
Fecha de Ingreso: mayo-2008
Mensajes: 24
Antigüedad: 16 años
Puntos: 0
Error de sintaxis de la sentencia INSERT INTO

Hola!

Tengo el siguiente problema a la hora de añadir un nuevo reistro a una tabla de BD Access. El código que utilizo es el siguiente:


' Variables que utilizo para tratar los datos
Dim da2 As OleDbDataAdapter
Dim dt2 As DataTable

' Cadena de conexión
Dim con As String = "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" & ruta
' Cadena de seleccion
Dim seleccion2 As String = "SELECT * FROM T_NEG"

' Crear un nuevo objeto del tipo DataAdapter
da2 = New OleDbDataAdapter(seleccion2, con)

' Crear los comandos de insertar, actualizar y eliminar
Dim cb2 As New OleDbCommandBuilder(da2)

' Como hay campos con caracteres especiales,
' al usarlos incluirlos entre corchetes.
cb2.QuotePrefix = "["
cb2.QuotePrefix = "]"

' Asignar los comandos al DataAdapter
' (se supone que lo hace automáticamente, pero...)
da2.UpdateCommand = cb2.GetUpdateCommand
da2.InsertCommand = cb2.GetInsertCommand
da2.DeleteCommand = cb2.GetDeleteCommand

' Esta base de datos usa el ID con valores automáticos
da2.MissingSchemaAction = MissingSchemaAction.AddWithKey

dt2 = New DataTable

da2.Fill(dt2)

' Utilizo un DataRow para agregar una nueva fila al DataTable
Dim dr2 As DataRow = dt2.NewRow

With frmSolicitudProveedor
dr2("referencia") = .txtReferencia.Text
dr2("refEmb") = .txtRefEmb.Text
dr2("refProv") = .txtRefProv.Text
dr2("fechaSol") = .txtFechaSol.Text
dr2("proveedor") = .cboProveedor.Text
dr2("udsMin") = .txtUdsMin.Text
dr2("eurMin") = .txtEurMin.Text
dr2("otrasUds1") = .txtOtrasUds1.Text
dr2("otrasEur1") = .txtOtrasEur1.Text
dr2("otrasUds2") = .txtOtrasUds2.Text
dr2("otrasEur2") = .txtOtrasEur2.Text
dr2("otrasUds3") = .txtOtrasUds3.Text
dr2("otrasEur3") = .txtOtrasEur3.Text
End With


dt2.Rows.Add(dr2)

da2.Update(dt2)

dt2.AcceptChanges()


El problema viene en tiempo de ejecución con el error "Error de sintaxis de la sentencia INSERT INTO" que salta en la linea "da2.Update(dt2)".

He leido que quizá podría estar usando una palabra reservada de Acces en alguno de los nombres de los campos o de la tabla, pero he cambiado los nombres y sigo con el mismo problema.

Lo curioso es que a la hora de guardar en otra tabla diferente y utilizando el mismo método, no me da problemas.

Alguien sabe por qué puede ser?

Saludos y muchas gracias