Visual Basic - Bucle borrar registros de un datagrid

Life is soft - evento anual de software empresarial
 
Vista:
sin imagen de perfil
Val: 80
Ha disminuido su posición en 2 puestos 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: 193
Ha aumentado su posición en 3 puestos en Visual Basic (en relación al último mes)
Gráfica de Visual Basic

Bucle borrar registros de un datagrid

Publicado por raul (62 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: 80
Ha disminuido su posición en 2 puestos 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