Antes déjeme decirle que el campo PosClasif sobra en la tabla porque éste se obtiene mediante una consulta, no obstante, le preparé el ejemplo considerando el campo en la tabla.
TABLA
Hago una consulta para ordenar y con base en ésta hago la actualización
CONSULTA ORDENAR DATOS
CONSULTA DE ACTUALIZACIÓN
Observe que actualizo con base en la función RT_NumeraParcialSQL(), el autor es el maestro JESUS MANSILLA CASTELLS -Mihura-.
FORMULARIO RENUMERA
Le asigno como origen de datos la consulta qryOrdena. (Me faltaron los encabezados del formulario).
Observe que la información esta ordena. Ahora, cambio el TotalPuntos de EDUARDO 670 por 630 y obtengo.
Efectivamente me lo reclasifica en puesto 4.
CÓDIGO DEL BOTÓN RENUMERAR
Private Sub btnRenumerar_Click()
DoCmd. OpenQuery "qryActualizaPuntaje"
DoCmd. Close acQuery, "qryActualizaPuntaje"
Me. Requery
End Sub
CÓDIGO OTROS EVENTOS DEL FORMULARIO
Private Sub Form_AfterUpdate()
Call btnRenumerar_Click
End Sub
Private Sub Form_Load()
DoCmd.MoveSize , 1 * 1440, , 5.5 * 1440
End Sub
Private Sub Form_Open(Cancel As Integer)
Call btnRenumerar_Click
End Sub
CÓDIGO DE LA FUNCIÓN
' Autor : JESUS MANSILLA CASTELLS -Mihura-
'---------------------------------------------------------------------------------------------
Public Function RT_NumerarParcialSQL(nDato) As Long
'variable que no se pierde entre las distintas llamadas
Static nCONTADOR As Long, nANTERIOR As String
If IsNull(nDato) Then 'si nDato es nulo: Iniciamos valor
nCONTADOR = 0
nANTERIOR = ""
Exit Function
End If
'- si nDato es igual al valor memorizado sumamos 1 al contador
If nDato = nANTERIOR Then
nCONTADOR = nCONTADOR + 1
Else '- iniciamos valor y memorizamos el anterior
nCONTADOR = 1
nANTERIOR = nDato
End If
RT_NumerarParcialSQL = nCONTADOR
End Function
Observe como la función utiliza variables estáticas. Esta es una forma utilizando la cuadrícula de Access, pero también se puede hacer mediante solo SQL. Si quiere el ejemplo lo puede solicitar a [email protected]
Comentario borrado por el autor - Enrique Feijóo
El el orden del origen de datos del formulario, añade el nombre o apellido (es un dato que no tiene discusión y evita elegir a dedo), otra fórmula iría en la línea de repetir la categoría y saltarse las duplicadas. Lo aclaro: en la categoría '421' dos segundos puestos y ningún tercero (el siguiente seria el cuarto) y todo ello si lo permiten las normas. Pregunta: ¿Porqué no el clone del formulario, suele ser más eficaz al no recorrer 'físicamente' los registros). - Enrique Feijóo