Obtener cantidad de lunes, Sabados y Domingos entre dos fechas VB6

Como se puede obtener, cantidad de sábados, domingos y lunes entre dos fechas por separado usando VB6

1 Respuesta

Respuesta
2

Puedes hacerlo algo así (suponiendo que tengas dos cuadros de texto para las fechas llamados txtFIni y txtFFin):

Dim i as Date
Dim numSabados as Integer, numDomingos as Integer, numLunes as Integer
For i=txtFIni to txtFFin
  Select Case Weekday(i)
    Case 1: numDomingos=numDomingos + 1 ' 1=Domingo
    Case 2: numLunes =numLunes + 1 ' 2=Lunes
    Case 7: numSabados =numSabados + 1 ' 7=Sabado
  End Select
Next i
Msgbox "Hay " & numSabados " sábados, " & numDomingos & " domingos y " & numLunes & " lunes entre las dos fechas"

Estoy usando la siguiente función:

Public Function CalculaVacaciones(f As Date, di As Integer) As Date
Dim i As Integer 'Numero de veces que aumenta la fecha
Dim j As Integer 'Numero de veces que se compara contra Di
Dim f2 As String
i = 1
j = 0
        While j < di
            f2 = f + i
             If Weekday(f2) <> vbSaturday Then     'si no es sabado
                If Weekday(f2) <> vbSunday Then ' si no es domingo
                  strsql = "select * from parametro where idpadre = 68 and descparametro = '" & f2 & "'"  ‘ aqui depende siel id de tu paramdetro es de feriados .
                  Rs.Open strsql, conexion
                    If Rs.EOF = True And Rs.BOF = True Then ' Si no esta en tabla de feriado
                        j = j + 1
                        Rs.Close
                  End If
                End If
             End If
        i = i + 1
        Wend
    CalculaVacaciones = f + i - 1
End Function

pero esta solo me arroja la fecha final de regreso tomando el inicio y los hábiles de cajas de texto, como haría para adaptar a esta lo que tu me envías y contar los feriados de la tabla de datos

Cada función te devolverá un único valor, en tu caso el último día de vacaciones.

Lo suyo sería que hicieses nuevas funciones para contar los días de la semana que quieres, por ejemplo (y el resto lo haces tu):

Public Function numSabados(fIni as Date, fFin as Date) as Long
Dim i as Date
numSabados=0
For i=fIni to fFin
  If Weekday(i)=7 Then numSabados=numSabados+1
Next i
End Function

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas