Visual Basic - Bucle borrar registros de un datagrid

Life is soft - evento anual de software empresarial
 
Vista:
sin imagen de perfil
Val: 53
Ha disminuido 1 puesto en Visual Basic (en relación al último mes)
Gráfica de Visual Basic

Bucle borrar registros de un datagrid

Publicado por Emilio (27 intervenciones) el 15/02/2020 11:54:46
Obtengo un recordset con artículos vendidos en un periodo y quiero eliminar los registros del mismo artículo, dejando solo el de fecha más reciente. Después de muchas pruebas, me rindo, pues a pesar de saber que con cada registro borrado el recordsetcount reduce uno y que después de eliminado he de mover al siguiente para activarlo, no consigo terminar bien el bucle; parece que llega al final y queda en vacío antes de lo que yo pienso. Este es mi bucle:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
cont = 1
INICIO:
 
If cont = rs.RecordCount Then
   GoTo Final
   Else
      nombre = rs.Fields(0): fchavta = rs.Fields(3): rs.MoveNext
 
 
      If nombre = rs.Fields(0) Then
                 If rs.Fields(3) > fchavta Then
                    rs.MovePrevious: rs.Delete: rs.MoveNext:  GoTo INICIO
                    Else
                    rs.Delete: rs.MoveNext:   GoTo INICIO
                 End If
      Else
      cont = cont + 1: GoTo INICIO
      End If
End If
 
 
 
Final:
    dgLento.ClearFields
    Set dgLento.DataSource = rs
    FormatoDataGrid

NOTA.-
Si dispongo el tope cont=rs.recordcount -1, se ejecuta bien el bucle, pero deja dos registros, no uno como yo quiero.

¿Alguien amable que ayude?
Muchas gracias
Emilio
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
sin imagen de perfil
Val: 355
Bronce
Ha mantenido su posición en Visual Basic (en relación al último mes)
Gráfica de Visual Basic

Bucle borrar registros de un datagrid

Publicado por raul (160 intervenciones) el 24/02/2020 23:00:30
Hola emilio

Sí el recordset solo tiene los registros de 1 solo articulo puedes simplemente: abrirlo ordenarlo de menor a mayor y luego haces un bucle de esta forma

1
2
3
4
5
6
7
8
dim temp as long, bucle as long
temp = rs.recordcount
rs.movefirts
for bucle = 1 to temp-1
 rs.delete
 rs.update
 rs.movenext
next bucle

como variante, si contiene varios articulo primero lo filtras

rs.filter("Articulo = '" & name_Articulo & "'")
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil
Val: 53
Ha disminuido 1 puesto en Visual Basic (en relación al último mes)
Gráfica de Visual Basic

Bucle borrar registros de un datagrid

Publicado por Emilio (27 intervenciones) el 25/02/2020 15:06:53
Muchas gracias. Lo veo luego. Pinta bien.
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