Eliminando con checkbox vb 6.0

Necesito saber sí se puede borrar múltiples registros con un checkbox, yo utilizo visual basic 6.0 y access 2003, uso ADO y un datagrid este es mi código fuente para borrar:
Private Sub cmdeliminararticulo_Click()
    multiopcion = MsgBox("¿Desea Eliminar el Artículo Seleccionado?", vbExclamation + vbYesNo, "Advertencia")
    If multiopcion = vbYes Then
        Set rstarticulos = cnnADODB.Execute("Delete from articulos where codigoarticulo=" + Me.datagrid_articulos.Columns(0).Text + "")
        Set rstarticulos = cnnADODB.Execute("Select * from articulos")
        Me.adodb_articulo.Refresh
    End If
End Sub
Me interesaría saber sí se puede borrar más de un registro con sql, ado y el datagrid, sí puedes responder este mje te lo agradezco.

1 respuesta

Respuesta
1
Si con una consulta con delete borras todos los que quieras.
Si la consulta del delte esta bien echa te tiene que borrar todo, para asegurarte primero pruébalo en la base de datos directamente.
Hola ¿andas bien?, te cambio la pregunta ¿con el delete de sql puedo puedo liminar más de un registro? Porque eso es lo que quiero hacer, viste mi código fuente, sí puedes responder este mje te lo agradezco.
¿Entiendo qué en limitar quieres decir alguna condición del where no?
Ahí estas borrando de la tabla artículos cuando el código es igual a la columna del datagrid
Hola, entiendo lo que dices y te doy la razón de que el id del artículo es igual a la columna del datagrid, ahora lo que quiero saber es lo siguiente: ¿Cómo hacer para borrar más de un artículo?, porque de la manera que te lo mostré sólo elimina un artículo, y lo que quiero hacer es poder eliminar más de un artículo, sí puedes responder este mje te lo agradezco.
Pero para eliminar más de un articulo, esos artículos tienen que tener otro campo en común, otra operación lógica..
Otra cosa es hacer tipo un for para que vaya recorriendo la grilla y baja borrando uno por uno.
¿Se entiende?
Hola, entiendo que debe recorrer el datagrid para borrar varios artículos pero no tengo idea de cómo recorrerlo con el for para hacerlo me podrías enseñármelo, sí puedes responder este mje te lo agradezco.
la estructura de un for es A to C
entonces para recorrer una grilla haces For G = 1 To MS1ctrldia.Rows - 1
ahi el for va a ir desde la primer fila hasta la ultima segun la cantidad de registros que tenga la grilla
despues en el cuerpo del for vos sabes que "G" es la posicion de la grilla y despues tenes las columnas que son fijas entonces van con 1.2.3...
De esta manera recorrer la grilla y tienes la posición de donde esta recorriendo
entonces con G + nro de columna tienes el index para sacar el dato que necesites.
Hola, hice más o menos lo que me dijiste pero la verdad soy un novato y el error que me sale es que no se especificaron los valores acá te paso el código fuente:
Private Sub cmdeliminarproveedor_Click()
    multiopcion = MsgBox("¿Desea Eliminar el Proveedor Seleccionado?", vbExclamation + vbYesNo, "Advertencia")
    If multiopcion = vbYes Then
        For grilla = 1 To Me.datagrid_proveedores.Row - 1
            'Set rstproveedores = cnnADODB.Execute("Delete from proveedores where codigoproveedor=" + Me.datagrid_proveedores.Columns(0).Text + "") esta línea esta comentada
            Set rstproveedores = cnnADODB.Execute("Delete from proveedores where codigoproveedor=" + Me.datagrid_proveedores.Columns(grilla).Text + "")
            Set rstproveedores = cnnADODB.Execute("Select * from proveedores")
            Me.adodb_proveedor.Refresh
        Next
    End If
End Sub
Grilla es una variable integer, lo del index y lo otro no sé cómo hacerlo y tampoco lo que le falta, sí puedes responder este mje te lo agradezco.
Grilla es la variable que contiene el index del for que esta recorriendo
es que tu consulta de delete from proveedor por lo que veo es que borre de proveedores todos los que son iguales a una columand e la grilla...
Tienes que poner el campo que hace referencia no se en el datagrid cual es la propiedad si es cell, range, textmatrix, fíjate cual es la propiedad para poner ç
datagrid_proveedores. Propiedad(y acá te tienes que fijar que te pide primero si fila o columna un ejemplo abajo de que primero pide columna y después fila)
datagrid_proveedores. Propiedad(0, grilla), sin punto text sin nada
ahí le estas pidiendo que te muestre que dato tiene en ese eje cartesiano.
Hola, te tengo noticias según lo que me dijiste cabié el datagrid por el flexgrid y el código para borrar me quedo así:
Private Sub cmdeliminararticulo_Click()
    multiopcion = MsgBox("¿Desea Eliminar el Artículo Seleccionado?", vbExclamation + vbYesNo, "Advertencia")
    If multiopcion = vbYes Then
        With Me.flexgrid_articulos
        If .Row < .RowSel Then i = .Row: j = .RowSel
        If .Row > .RowSel Then j = .Row: i = .RowSel
        If .Row = .RowSel Then i = .Row: j = .Row
        For k = i To j
            .Row = k
            Set rstarticulos = cnnADODB.Execute("Delete from articulos where codigoarticulo=" & CLng(Me.flexgrid_articulos.TextMatrix(Me.flexgrid_articulos.Row, 0)))
            Set rstarticulos = cnnADODB.Execute("Select * from articulos")
            Me.adodb_articulo.Refresh
        Next
        End With
    End If
End Sub
Sólo que hay 2 problemas uno me da un error diciendo que valor de fila no válido y me borra sólo una fila.
Le segunda problema es que me selecciona varias filas pero no el shift y yo quiero hacerlo con ctrl para eligir una fila después otra fila pero no una fila seguida de la otra, sí puedes responder este mje te lo agradezco.
Saltear en un flexgrid es un laburo de artesano, yo los eliminaría de a 1 o sino lo seleccionas y que vayan a otro flexgrid y desde ahí eliminar a todo
Lo veo más seguro y más control.
Después el for con las variables de letras esta medio confuso...
Hola, ¿y con un truedbgrid se puede saltearse?, sí puedes responder este mje te lo agradezco.
Tendrías que probar no lo conozco pero me parece rebuscado para borrar
Porque perder el hilo de lo que estas borrando
Hola, no te ofendas pero me podrías enseñar cómo haces tu para eliminar varias filas de la grilla que utilices mostrándome tu código fuente, porque la verdad trato de sacarlo y no logro nada, sí puedes responder este mje te lo agradezco.
Nunca hice de seleccionar de una grilla y después eliminar, pero vamos a la lógica que utilizaría.
Supongamos que tienes 1000 registros y de esos tienes que elegir cual quieres borrar.
Bueno mil registros es mucho y seleccionar uno por uno puede ser bastante malo de hacer y poco controlable.
Yo haría o abriría otra grilla, listbox, combobox etc, buscaría que componentes utilizar para que al seleccionar de la grilla me muestre lo que elije y ahí recién borrarlos.
Hola, ¿la idea la tengo pero cómo pasarlos a otro datagrid porque sólo tengo los columns cómo propiedad para usar los datos de la fila y de la columna que puse en mi código fuente?, sí puedes responder este mje te lo agradezco.
¿Llenaste una grilla?
Hola, sí es la grilla que tenía enlazada con el adodc.
Te tengo noticias averigüé cómo borrar vaiors registros con la propiedad in del delete así:
delete from articulos where codigoarticulo in (001,002,003)
Pero el problema es que no sé cómo concatenar la o las columnas del id del datagrid, sí puedes responder este mje te lo agradezco.
Pero es algo ilógico eso, tienes que buscar otra manera
como vas a concatenar mil registros ¿?
¿Tiene un limite la carga de productos? ¿
Pensé si son 20 y elijo 10 y no tienes manera de saber que todos estén bien elegidos.
Para mi la mejor manera es que armes 2 cosas 1) otra grilla que se visualicen los datos elegidos, o armar un vector, matriz con todos los datos y después ahí lo laburas
saludos
leandro

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas