Autor Tema: [G] .Net y SQL. Problema con INSERT INTO  (Leído 4513 veces)

0 Usuarios y 2 Visitantes están viendo este tema.

daviel

  • Bytes
  • *
  • Mensajes: 12
  • Reputación: +0/-0
    • Ver Perfil
[G] .Net y SQL. Problema con INSERT INTO
« en: Junio 12, 2010, 08:57:35 am »
Hola a todos, tengo el siguiente problema al intentar realizar mi consulta:
Citar
No se controló OleDbException
Error de sintaxis en la instrucción INSERT INTO.
El codigo es el siguiente
Código: [Seleccionar]
Tabla.Clear()
SQL = "INSERT into Estado(id, estado, fecha, id_pareja) VALUE('4', '" & estadox & "', #" & CDate(fecha) & "#, '" & id_pareja & "')"
Cn.Ejecuta_Comando(SQL)
Dejo tambien donde declaro Ejecuta_Comando(parametro)
Código: [Seleccionar]
        Sub Ejecuta_Comando(ByVal SQL As String)
            Dim Comando As New OleDbCommand
            With Comando
                .Connection = Cn
                .CommandType = CommandType.Text
                .CommandText = SQL
                .ExecuteNonQuery()
            End With
            Comando = Nothing
        End Sub

Pd: el code donde declaro cn no lo pongo ya que me funciona perfectamente, es decir, puedo realizar consultas y devolver datos.

ssccaann43

  • Terabyte
  • *****
  • Mensajes: 970
  • Reputación: +97/-58
    • Ver Perfil
    • Sistemas Nuñez, Consultores y Soporte, C.A.
Re:[G] .Net y SQL. Problema con INSERT INTO
« Respuesta #1 en: Junio 13, 2010, 02:19:08 pm »
En SQL esto no funciona #... Se sustituye por '...

Código: (vb) [Seleccionar]
SQL = "INSERT into Estado(id, estado, fecha, id_pareja) VALUE('4', '" & estadox & "', '" & CDate(fecha) & "', '" & id_pareja & "')"
Cn.Ejecuta_Comando(SQL)
Miguel Núñez.

daviel

  • Bytes
  • *
  • Mensajes: 12
  • Reputación: +0/-0
    • Ver Perfil
Re:[G] .Net y SQL. Problema con INSERT INTO
« Respuesta #2 en: Junio 13, 2010, 07:29:28 pm »
pero es una fecha, no una string, o un integer.. tengo entendido que las fechas se utiliza # fecha #

ademas sin esto tampoco funciona. me sale el mismo error.

Pd:la base de datos es un archivo de acces( mdb)

YAcosta

  • Moderador Global
  • Exabyte
  • *****
  • Mensajes: 2853
  • Reputación: +160/-38
  • Daddy de Qüentas y QüeryFull
    • Ver Perfil
    • Personal
Re:[G] .Net y SQL. Problema con INSERT INTO
« Respuesta #3 en: Junio 13, 2010, 11:32:50 pm »
pero es una fecha, no una string, o un integer.. tengo entendido que las fechas se utiliza # fecha #

ademas sin esto tampoco funciona. me sale el mismo error.

Pd:la base de datos es un archivo de acces( mdb)

Error 1: Al poncer CDate no estas mandando un string o un integer.
Error 2: No pongas el #
Error 3: Estas poniendo ' en el campo fecha con lo cual lo conviertes en string, es correcto lo que dice Miguel en poner comilla simple, yo lo hago, pero con Access no funca, debes enviarlo sin comilla, tu codigo debe ser:

Código: (vb) [Seleccionar]
SQL = "INSERT into Estado(id, estado, fecha, id_pareja) VALUE('4', '" & estadox & "', " & CDate(fecha) & ", '" & id_pareja & "')"
Cn.Ejecuta_Comando(SQL)

No te recalco sobre los demás campos como id, estado etc porque parecen campos numéricos pero tu los envías como string, es decir si en tu BD tienes el campo declarado como integer o double el id y id_pareja, entonces debes enviarlo así:

Código: (vb) [Seleccionar]
SQL = "INSERT into Estado(id, estado, fecha, id_pareja) VALUE(4, '" & estadox & "', " & CDate(fecha) & ", " & id_pareja & ")"
Cn.Ejecuta_Comando(SQL)

Espero te sirva
Me encuentras en YAcosta.com

daviel

  • Bytes
  • *
  • Mensajes: 12
  • Reputación: +0/-0
    • Ver Perfil
Re:[G] .Net y SQL. Problema con INSERT INTO
« Respuesta #4 en: Junio 14, 2010, 07:45:21 am »
gracias por tu respuesta, cuando llegue a mi casa lo pruebo y te digo que tal.. Espero que funcione..

Me funciona a la perfeccion gracias amigo.

Pd: los datos en la bd los tengo como string menos el campo fecha, Saludos

Ahora el problema es otro.. cuando inserto datos en la bd pregunto si ya estan y en tal caso que los actualize, pero si no estan que los inserte. Pero siempre cuando los datos estan en la bd, el primer registro de actualizacion en la bd me trunca la fecha y la cambia a 00:45:01 (el formato es ese, los numeros son aleatorios, no siguen ningun patron), la sentencia que realiza esto es la siguiente:

Código: [Seleccionar]
        Function guardar(ByVal dia, ByVal estado, ByVal pareja_id, ByVal id)
            Tabla.Clear()
            SQL = "Select Max(id) As campo From " & _Tabla
            Tabla = Cn.Mostrar_Consulta(SQL, _Tabla)
            With Tabla.Rows(0)
                _Id = .Item("campo").ToString
            End With
            Dim ids As String = _Id
            Tabla.Clear()
            SQL = "Select * from " & _Tabla & " Where ( id = '" & id & "' )"
            Tabla = Cn.Mostrar_Consulta(SQL, _Tabla)
            MsgBox(Tabla.Rows.Count)
            If Tabla.Rows.Count = 0 Then
                SQL = "INSERT INTO " & _Tabla & " (id,estado,fecha,id_pareja) VALUES ('" & ids + 1 & "', '" & estado & "', #" & CDate(dia) & "#, '" & pareja_id & "')"
                Cn.Ejecuta_Comando(SQL)
            Else
                MsgBox(dia)
                SQL = "update " & _Tabla & " set estado = '" & estado & "', fecha = " & CDate(dia) & ", id_pareja = '" & pareja_id & "' Where ( id = '" & ids & "')"
                Cn.Ejecuta_Comando(SQL)
            End If
            Return True
        End Function

Inserte un MsgBox(dia) y me lo muestra perfect, pero lo inserta mal(siempre la primera insercion de update, el resto perfecto)
« última modificación: Junio 14, 2010, 04:19:01 pm por daviel »