Como ordenar un formulario continuo por dos criterios?

Necesito ordenar un formulario continuo por dos criterios. Por ejemplo: En el evento al activar o al abrir registro. Primero me lo ordene por el campo fecha en orden descendente. Y si hay mas de un registro en la misma fecha, que lo ordene por el campo Id descendente.

2 respuestas

Respuesta
2

Es necesario agrupar por la fecha para contar los registros del grupo.

TABLA DEL EJEMPLO

PROCEDIMIENTO AL ABRIR DEL FORMULARIO

Private Sub Form_Open(Cancel As Integer)
  Dim strSQl As String
  Dim rs As Recordset
  Dim reg_fecha As Integer
  strSQl = "SELECT tblAlgo.fecha" & vbCrLf
  strSQl = strSQl & "           , Count(tblAlgo.fecha) AS registros" & vbCrLf
  strSQl = strSQl & "        FROM tblAlgo" & vbCrLf
  strSQl = strSQl & "    GROUP BY tblAlgo.fecha" & vbCrLf
  strSQl = strSQl & "      HAVING (((Count(tblAlgo.fecha))>1));"
  Set rs = CurrentDb.OpenRecordset(strSQl)
  If rs.BOF() And rs.EOF() Then
    reg_fecha = 0
  Else
   rs.MoveLast
   reg_fecha = rs.RecordCount
  End If
 If reg_fecha = 0 Then
   Me.OrderBy = "fecha"
   Me.OrderByOn = True
 Else
   Me.OrderBy = "id"
   Me.OrderByOn = True
 End If
 rs.Close
 Set rs = Nothing
End Sub

RESULTADO AL ABRIR EL FORMULARIO

Como no se repiten las fechas se ordena por el campo fecha.

Lo probé repitiendo fechas como muestra esta tabla.

Abro nuevamente el formulario

Como hay fechas repetidas se abre ordenado por el campo id.

Respuesta
2

Si se desea ordenar por DOS criterios, solo hay que aplicárselos en el orden correcto, primero fecha y después ID y separados por una coma simple (o el separador de listas de la configuración regional de la maquina):

.... OrderBy Fecha, ID

Otra cosa es que se desee ordenar por UN SOLO CRITERIO y optar por dos alternativas en función de ¿qué ...?.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas