Access - Renumerar asientos

   
Vista:
Imágen de perfil de Salvador

Renumerar asientos

Publicado por Salvador (65 intervenciones) el 01/07/2015 18:16:25
Tengo una tabla que adjunto, en la que el campo "asiento" lo consigo en un formulario de entrada de datos con este código al activar registro:
If Me.NewRecord Then
Me.asiento = Nz(DMax("asiento", "conta movimientos"), 0) + 1
End If

Me gustaría saber como puedo seleccionar todos los registros que componen un asiento y borrar un asiento.

Después querría saber como puedo renumerar los asientos para que no falte ninguno.
Gracias

Salva
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

Renumerar asientos

Publicado por Enrique Heliodoro (1663 intervenciones) el 02/07/2015 20:03:54
Conocido el numero de asiento, se puede utilizar para filtrar ( Select * From TablaXX Where Asiento =" & [aquí el numero de asiento]

Para borrarlos: una consulta de borrado con el mismo filtro anterior (Delete * From TablaXX Where Asiento = " & [aquí el numero de asiento]

La renumeracion es mas compleja con VBA se abriría un recorset sobre la tabla (ordenada por asientos) y se tendría una variable para controlar el asiento en curso (Reg_Actual) y otra para la numeración correlativa (Num_Actual).

Se iniciaría la variable numeradora (normalmente seria el numero uno)
se recupera el inicio del recordset (ir al primer registro)
Se lee (el valor del asiento del primer registro) y se guarda como Reg_Actual

Se comenzaría a recorrer los registros con un bucle (hasta que se acaben los registros)
Se lee el campo Asiento y se compara con el valor guardado (Reg_Actual )
- si no es el mismo:
... se aumenta el numerador (Num_Actual)
... se actualiza Reg_Actual
... fin si
Se le asigna al asiento el numero (Num_Actual)
se va al siguiente registro
se vuelve al principio del bucle


Es mas que probable que si se borra el asiento 30, los primeros 29 no necesiten regenerar el numero (hacerlo no los dañara) pero simplifica el bucle

Esta la opción de guardar el numero de registro borrado y renumerar a partir de este, pero ¿y si se borran dos?... el renumerar con cada borrado duplica el trabajo de una opción (renumerar) que debería ser independiente de si se borra uno o todo.
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