none
Como puedo solucionar este problema? RRS feed

  • Pregunta

  • El problema es el siguiente

    Utilizo este codigo para eliminar una fila seleccionada de un datagridview

    cnx.Open()

     

    Dim sql As String

     

    Dim id As String

    id = DataGridView1.Item(0, DataGridView1.CurrentRow.Index).Value

     

    Dim comando As OdbcCommand

    sql =

    "delete from libros where id_libro = " & id

    comando =

    New OdbcCommand(sql, cnx)

    comando.ExecuteNonQuery()

    comando.Connection.Close()

    Pero ahora necesito hacer algo parecido

    Al dar click en un boton llamado Dar de Baja que se ingrese en el campo DISPONIBLE de la TABLA LIBROS la letra "N"

    Cambie esta linea

    sql =

    "delete from libros where id_libro = " & id

    Por esta otra

    sql =

    "insert into libros (disponible) values(N) where id_libro = " & id

    Pero me muestra un error que dice que falta punto y coma (;) al final de la intruccion SQL

    Espero haberme dado a entender y espero que me puedan ayudar

    Gracias

    viernes, 13 de agosto de 2010 5:19

Respuestas

  • Hola:

    Con la instruccion
    delete from libros where id_libro = id
    lo que se hace es borrar de la tabla libros, el registro cuyo identificador es igual a id.

    La instruccion
    insert into libros (disponible) values(N) where id_libro = id
    esta maL, deberia ser:
    insert into libros (id,disponible) values(UN VALOR NUMERICO SI EL CAMPO id ES NUMERICO,'N')
    lo que se hace es insertar en la tabla libros, el registro cuyo identificador es igual a UN VALOR NUMERICO.

    P.D.
    Si posteas la estructura completa de la tabla, se podra poner las instrucciones correctas

    Espero que se entienda
    Un saludo desde Bilbo
    Carlos

    viernes, 13 de agosto de 2010 6:47
  • SI insertas texto, ha de ir entre comilas 'N'
    viernes, 13 de agosto de 2010 7:20
  • Hola:
    Prueba esto.


        Private Sub btnXXX_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnXXX.Click

            Try
                Using loConexion As New SqlConnection(TUCADENA DE CONEXION)
                        lsQuery = "Update TUTABLA Set Disponible=@Disponible Where Id_Libro=@Id_Libro"
                        Dim loFila As DataGridViewRow = TUDATAGRIVIEW.CurrentRow()
                    ' crear comando
                    Using loComando As New SqlCommand(lsQuery, loConexion)
                        'añadir parametros al comando
                        loComando.Parameters.Add(New SqlParameter("@Id_Libro", loFila.Cells("Id_Libro").Value))
                        loComando.Parameters.Add(New SqlParameter("@Disponible", "N"))
                        loConexion.Open()   ' abrir conexión
                        loComando.ExecuteNonQuery()
                    End Using
                End Using
            Catch Exp As SqlException
                Me.Cursor = Cursors.Default
                MessageBox.Show(Exp.Message, "btnXXX_Click", MessageBoxButtons.OK, MessageBoxIcon.Information)
            Catch Exp As Exception
                Me.Cursor = Cursors.Default
                MessageBox.Show(Exp.Message, "btnXXX_Click", MessageBoxButtons.OK, MessageBoxIcon.Information)
            End Try
        End Sub

    Espero que te sirva
    Un saludo desde Bilbo
    Carlos

    viernes, 13 de agosto de 2010 9:15

Todas las respuestas

  • Hola:

    Con la instruccion
    delete from libros where id_libro = id
    lo que se hace es borrar de la tabla libros, el registro cuyo identificador es igual a id.

    La instruccion
    insert into libros (disponible) values(N) where id_libro = id
    esta maL, deberia ser:
    insert into libros (id,disponible) values(UN VALOR NUMERICO SI EL CAMPO id ES NUMERICO,'N')
    lo que se hace es insertar en la tabla libros, el registro cuyo identificador es igual a UN VALOR NUMERICO.

    P.D.
    Si posteas la estructura completa de la tabla, se podra poner las instrucciones correctas

    Espero que se entienda
    Un saludo desde Bilbo
    Carlos

    viernes, 13 de agosto de 2010 6:47
  • La tabla solo tiene 4 campos

    Id_Libro----Nombre----Existencia----Disponible y lo que trato de hacer es que al seleccionar una fila y dar click en el boton dar de baja se agregue al campo Disponible la letra N  

    viernes, 13 de agosto de 2010 6:52
  • SI insertas texto, ha de ir entre comilas 'N'
    viernes, 13 de agosto de 2010 7:20
  • Hola:
    Prueba esto.


        Private Sub btnXXX_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnXXX.Click

            Try
                Using loConexion As New SqlConnection(TUCADENA DE CONEXION)
                        lsQuery = "Update TUTABLA Set Disponible=@Disponible Where Id_Libro=@Id_Libro"
                        Dim loFila As DataGridViewRow = TUDATAGRIVIEW.CurrentRow()
                    ' crear comando
                    Using loComando As New SqlCommand(lsQuery, loConexion)
                        'añadir parametros al comando
                        loComando.Parameters.Add(New SqlParameter("@Id_Libro", loFila.Cells("Id_Libro").Value))
                        loComando.Parameters.Add(New SqlParameter("@Disponible", "N"))
                        loConexion.Open()   ' abrir conexión
                        loComando.ExecuteNonQuery()
                    End Using
                End Using
            Catch Exp As SqlException
                Me.Cursor = Cursors.Default
                MessageBox.Show(Exp.Message, "btnXXX_Click", MessageBoxButtons.OK, MessageBoxIcon.Information)
            Catch Exp As Exception
                Me.Cursor = Cursors.Default
                MessageBox.Show(Exp.Message, "btnXXX_Click", MessageBoxButtons.OK, MessageBoxIcon.Information)
            End Try
        End Sub

    Espero que te sirva
    Un saludo desde Bilbo
    Carlos

    viernes, 13 de agosto de 2010 9:15