Visual Basic - Problema al insertar registro en base de datos access

Life is soft - evento anual de software empresarial
   
Vista:

Problema al insertar registro en base de datos access

Publicado por Toni (27 intervenciones) el 30/10/2014 16:00:36
Hola buenas tardes, estoy intentando realizar una insercion de un registro en una base de datos access con VB.NET y me da un error cuando intento ejecutarla. Yo creo que puede ser problema a la hora de escribir la cadena SQL con distintos tipos de datos (Strings y Doubles) y que por eso no se me ejecute.
Como error me sale : System.Data.OleDbException(0x80040E14) : Error de sintaxis en la intrucción INSERT INTO
pero soy inexperto en esto y no logro dar con la solución!
Podrian ayudarme por favor? Aqui les copio el codigo de mi funcion. GRACIAS DE ANTEMANO.

Function AjouterPipe(ByVal Product As String, ByVal UK As String, ByVal DRW As String, ByVal Description As String, ByVal KittingTime As Double, ByVal CuttingWiresTime As Double, ByVal CuttingCablesTime As Double, ByVal CableStrippingTime As Double, ByVal CrimpingTime As Double, ByVal TwistWiresTime As Double, ByVal MechanicalAssamblyTime As Double, ByVal SubAssamblyTime As Double, ByVal AssamblyTime As Double, ByVal ElectricalTestTime As Double, ByVal GlueClosingTime As Double, ByVal InsulationTestTime As Double, ByVal FoamingTime As Double, ByVal CleaningTime As Double, ByVal CheckTime As Double, ByVal PackagingTime As Double, ByVal TotalTime As Double) As Boolean

'2.CONEXION
Dim Conexion As New OleDb.OleDbConnection
Conexion.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Users\Nino\Documents\Visual Studio 2013\Projects\StandarTimeNewProduct 3\DataBaseCMRT.accdb;Persist Security Info =False"

'3.CADENA SQL
Dim CadenaSQL As String = "INSERT INTO " & Product & " (UK, DRW, Description, KittingTime, CuttingWiresTime, CuttingCablesTime, CableStrippingTime, CrimpingTime, TwistWiresTime, MechanicalAssamblyTime, SubAssamblyTime, AssamblyTime, ElectricalTestTime, GlueClosingTime, InsulationTime, FoamingTime, CleaningTime, 100%CheckTime,PackagingTime,TotalTime ) "

CadenaSQL = CadenaSQL + "VALUES ('" & UK & "', "
CadenaSQL = CadenaSQL + " '" & DRW & "', "
CadenaSQL = CadenaSQL + " '" & Description & "', "
CadenaSQL = CadenaSQL + " '" & KittingTime & "', "
CadenaSQL = CadenaSQL + " '" & CuttingWiresTime & "', "
CadenaSQL = CadenaSQL + " '" & CuttingCablesTime & "', "
CadenaSQL = CadenaSQL + " '" & CableStrippingTime & "', "
CadenaSQL = CadenaSQL + " '" & CrimpingTime & "', "
CadenaSQL = CadenaSQL + " '" & TwistWiresTime & "', "
CadenaSQL = CadenaSQL + " '" & MechanicalAssamblyTime & "', "
CadenaSQL = CadenaSQL + " '" & SubAssamblyTime & "', "
CadenaSQL = CadenaSQL + " '" & AssamblyTime & "', "
CadenaSQL = CadenaSQL + " '" & ElectricalTestTime & "', "
CadenaSQL = CadenaSQL + " '" & GlueClosingTime & "', "
CadenaSQL = CadenaSQL + " '" & InsulationTestTime & "', "
CadenaSQL = CadenaSQL + " '" & FoamingTime & "', "
CadenaSQL = CadenaSQL + " '" & CleaningTime & "', "
CadenaSQL = CadenaSQL + " '" & CheckTime & "', "
CadenaSQL = CadenaSQL + " '" & PackagingTime & "', "
CadenaSQL = CadenaSQL + " '" & TotalTime & "')"

'4.COMAND
Dim Comando As OleDbCommand = Conexion.CreateCommand()
Comando.CommandText = CadenaSQL

'5. EJECUTAR LA INSERCION
Try
Conexion.Open()
Comando.ExecuteNonQuery()
Conexion.Close()

Catch ex As Exception
If ex.ToString.Contains("valores duplicados") Then
MsgBox("El Producto este ya se encuentra introducido")
Else
MsgBox(ex.ToString)
End If
End Try

Return True

End Function
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de andres guerrero

Problema al insertar registro en base de datos access

Publicado por andres guerrero (700 intervenciones) el 30/10/2014 20:58:16
Estimado cuando haces

"INSERT INTO " & Product & "

product es el nombre de la tabla???? por que eso me parece que hay aerror.

Intenta haciendo

inserto into TABLA
values y los datos...


Dim CadenaSQL As String = "INSERT INTO tabla "

CadenaSQL = CadenaSQL + "VALUES ('" & UK & "', "
CadenaSQL = CadenaSQL + " '" & DRW & "', "
CadenaSQL = CadenaSQL + " '" & Description & "', "
CadenaSQL = CadenaSQL + " '" & KittingTime & "', "
CadenaSQL = CadenaSQL + " '" & CuttingWiresTime & "', "
CadenaSQL = CadenaSQL + " '" & CuttingCablesTime & "', "
CadenaSQL = CadenaSQL + " '" & CableStrippingTime & "', "
CadenaSQL = CadenaSQL + " '" & CrimpingTime & "', "
CadenaSQL = CadenaSQL + " '" & TwistWiresTime & "', "
CadenaSQL = CadenaSQL + " '" & MechanicalAssamblyTime & "', "
CadenaSQL = CadenaSQL + " '" & SubAssamblyTime & "', "
CadenaSQL = CadenaSQL + " '" & AssamblyTime & "', "
CadenaSQL = CadenaSQL + " '" & ElectricalTestTime & "', "
CadenaSQL = CadenaSQL + " '" & GlueClosingTime & "', "
CadenaSQL = CadenaSQL + " '" & InsulationTestTime & "', "
CadenaSQL = CadenaSQL + " '" & FoamingTime & "', "
CadenaSQL = CadenaSQL + " '" & CleaningTime & "', "
CadenaSQL = CadenaSQL + " '" & CheckTime & "', "
CadenaSQL = CadenaSQL + " '" & PackagingTime & "', "
CadenaSQL = CadenaSQL + " '" & TotalTime & "')"


otra manera de saber es presentar el valor de CadenaSQL ... cuando termina de concatenar y probarla en un QUERY Analizer
Espero te ayuda
Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Problema al insertar registro en base de datos access

Publicado por Toni (27 intervenciones) el 31/10/2014 09:52:38
Muchas gracias Andres, ya encontré el problema es al definir la cadena SQL 100%CheckTime debe ir entre corchetes de esta manera [100%CheckTime]. Era por eso que no me ejecutaba bien la insercion del registro!
Muchas gracias por todo! Un saludo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Wilfredo Patricio Castillo

Problema al insertar registro en base de datos access

Aunque hayas encontrado la solución a tu inconveniente, déjame decirte que no es la mejor manera de hacer las cosas.

Primero: VB.NET, es un lenguaje orientado a objetos, por lo tanto deberías programar OO, sino, no veo el sentido de tener VS 2013.

Segundo: Ese tipo de cadenaSQL que usas, lo hace totalmente vulnerable a SQL Injection.
Tecero: Dificilmente mantenible y nada escalable.

Saludos cordiales
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Problema al insertar registro en base de datos access

Publicado por Toni (27 intervenciones) el 31/10/2014 23:44:43
Querido wilfredo, no se de que me hablas con OO ni que es SQL injection.
Primero: Soy estudiante de ingenieria industrial, no de informatica, y no he visto esto en mi vida. no soy experto en esto y estoy empezando. lo poco que se lo aprendi con video tutoriales.
Segundo:si no ves correcto lo que hago puedes enseñarme como se hace si te parece. yo no encuentro otra manera de aprender.
Tercero: Gracias por tu aportación
Saludos cordiales
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Wilfredo Patricio Castillo

Problema al insertar registro en base de datos access

Entiendo ahora tu inconveniente.

Si eres estudiante, entonces, ya tienes una pista para estudiar o investigar al respecto.
No siempre los vídeo tutoriales que hay por internet son los adecuados, los buenos son de pago.
Si estás empezando en esto, deberías empezar bien, ya que de lo contrario te meterás en mas problemas, como ya te dije hay muchos vídeos que no necesariamente enseñan de la forma correcta, ya que hay muchos aficionados que tienen voluntad y entusiasmo por aportar, pero lamentablemente no sigues ciertos patrones que se deben tener en cuenta.

No veo correcto lo que haces y si podría enseñarte en eso no hay ningún inconveniente, si es que estás dispuesto a aprender.

Y no es necesario el agradecimiento, sobre todo cuando no has entendido nada como tu mismo estás manifestando.

Saludos cordiales.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar