Foros del Web » Programación para mayores de 30 ;) » .NET »

Error de sintaxis de la sentencia INSERT INTO

Estas en el tema de Error de sintaxis de la sentencia INSERT INTO en el foro de .NET en Foros del Web. 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 ...
  #1 (permalink)  
Antiguo 05/08/2009, 12:54
 
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
  #2 (permalink)  
Antiguo 05/08/2009, 18:01
 
Fecha de Ingreso: julio-2009
Mensajes: 4
Antigüedad: 14 años, 9 meses
Puntos: 0
Respuesta: Error de sintaxis de la sentencia INSERT INTO

Hola,
como decis que la misma sentencia funciona en otra tabla, verificaste si la tabla tiene campos obligatorios que le estes pasando en null?
(asi vamos descartando posibilidades)
saludos,
  #3 (permalink)  
Antiguo 06/08/2009, 01:32
 
Fecha de Ingreso: mayo-2008
Mensajes: 24
Antigüedad: 16 años
Puntos: 0
Respuesta: Error de sintaxis de la sentencia INSERT INTO

El único campo obligatorio de ambas tablas es el campo codigo, que es autonumérico y se genera automáticamente.

De hecho, a la hora de rellenar el DataRow con los datos, probé asignándoles un valor a mano en vez de pasarle la variable (dr2("referencia") = "12") pero el error que me da es el mismo.

Ya no se que hacer
  #4 (permalink)  
Antiguo 06/08/2009, 05:18
 
Fecha de Ingreso: mayo-2008
Mensajes: 24
Antigüedad: 16 años
Puntos: 0
Respuesta: Error de sintaxis de la sentencia INSERT INTO

SOLUCIONADO

Sigo sin saber por qué pero he vuelto a codificar desde 0 el procedimiento de guardado y me funciona perfectamente. No se exactamente dónde está el error pero ya se ha solucionado.

Un saludo y gracias
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 08:33.