Cuantas veces seguidas se repite un evento
Buenas tardes pepe
Por consulta SQL lo veo mas complejo, ya que debes condicionar los dias, ordenar, etc. Lo veo mas facil por evento.
Tienes que crear un evento y leer la tabla para determinar los dias consecutivos de lluvia.
Ordenas la tabla por fecha en orden ascendente, asi tienes los dias consecutivos. (utilizas la sentencia Sort.)
Declaras tres(3) variables: cont para determinar los 5 dias de lluvia.
fecha_inicio para determinar el primer dia de lluvia consecutivo.
fecha_final para determinar el ultimo dia de lluvia consecutivo.
Debes sustituir los campos del evento por los campos que tu definistes:
1.- reg_fechas.Open "nombre de tu tabla", CurrentProject.AccessConnection, adOpenDynamic, adLockOptimistic
2.- reg_fechas.Sort = "nombre del campo fecha ASC"
3.- If reg_fechas.Fields("nombre del campo que indica si llovio o no") = - 1 Then
Aqui estoy considerando el tipo de datos como SI/NO, definido en la tabla.
Recuerda que Si es = - 1 y NO es = 0 . ¿No se como definistes este campo en la tabla?
4.- fecha_inicio = reg_fechas.Fields("nombre del campo fecha que definistes")
5.- fecha_final = reg_fechas.Fields("nombre del campo fecha que definistes")
6.- Msgbox " Llovio cinco dias consecutivos a partir del dia " & fecha_inicio & " hasta el dia " & fecha_final
El mensaje muestra la fecha desde y la fecha hasta de los cinco dias de lluvia. se puede almacenar en un archivo o tabla y luego al terminar el proceso se lee la tabla y se puede listar las fechas de lluvias continuas .
--------------------------------------------------------------------------------------------------------------------------------------
El evento Private Sub repite_evento() lo puedes ejecutar con un botón de comando-
Option Compare Database
Dim cont , fecha_inicio , fecha_final
Private Sub repite_evento()
Dim reg_fechas As ADODB.Recordset
Set reg_fechas = New ADODB.Recordset
reg_fechas.Open "lluvias", CurrentProject.AccessConnection, adOpenDynamic, adLockOptimistic
reg_fechas.Sort = "fecha ASC"
reg_fechas.MoveFirst
cont = 0
Do While Not reg_fechas.EOF()
If reg_fechas.Fields("llovio") = - 1 Then
If cont = 0 Then
fecha_inicio = reg_fechas.Fields("fecha")
Endif
cont = cont + 1
If cont = 5 Then
fecha_final = reg_fechas.Fields("fecha")
Msgbox " Llovio cinco dias consecutivos a partir del dia " & fecha_inicio & " hasta el dia " & fecha_final
cont = 0
fecha_inicio = Null
fecha_final = Null
Endif
Endif
reg_fechas.MoveNext
Loop
reg_fechas.Close
Set reg_fechas = Nothing
End Sub