Tema: dias habiles
Ver Mensaje Individual
  #6 (permalink)  
Antiguo 19/12/2006, 07:47
alejandrocc03
 
Fecha de Ingreso: febrero-2005
Mensajes: 12
Antigüedad: 20 años, 2 meses
Puntos: 0
AYUDAME PORFA FECHA SIGUIENTE Y dias habiles

Dim mirecordset As Recordset

Dim conexion As Connection

'

Dim dif, i As Integer

Dim fecha_inicial, fecha_final_un_dia_mas_mientra_nosea_sab_dom_fer As String

' Para inicializar el objeto Connexion

Set conexion = New Connection

' La Base de datos tiene que estar en la carpeta del proyecto

conexion.ConnectionString = "Provider = Microsoft.Jet.OLEDB.4.0; Data source = " & App.Path & "\BD.mdb;Persist Security Info=False;"

conexion.Open

'

fecha_inicial = "01/12/2006"

fecha_final_un_dia_mas_mientra_nosea_sab_dom_fer = "08/12/2006"



Por favor ayudame estoy tratando de desarrollar un pequeño for que me tiene loco. Necesito que le pregunte a la fecha final… lo siguiente.



Cuando me valla a dar la fecha fina me debe dar una fecha que no sea sabado ni domingo y tampoco feriado entonces:



Ejemplo 1:



Fecha fina "08/12/2006" es dia viernes, luego viene sabado y domingo que son dias feriado en este caso la fecha que debe darme es el dia lunes "11/12/2006" mientra esta no sea un dia festivo, si en dado caso el lunes "11/12/2006" es un dia festivo el dia que me deberia dar es el martes mientra no sea un dia festivo ya sabemos que este dia festivo son los que se encuentra en la base de dato.



En pocas palabras lo que necesito es que me de la fechas "dd/mm/yyyy" del dia siguiente mientra la fecha no sea sabado, domingo y feriado.



Y luego continuo con el codigo de abajo.





dif = CDate(fecha_final_un_dia_mas_mientra_nosea_sab_dom _fer) - CDate(fecha_inicial)

For i = 1 To dif

If Weekday(CDate(fecha_inicial) + i, vbMonday) = 6 Or Weekday(CDate(fecha_inicial) + i, vbMonday) = 7 Then

dif = dif - 1

Else

Set mirecordset = conexion.Execute("SELECT fecha FROM festivos WHERE MONTH(fecha) = " & Month(CDate(fecha_inicial) + i) & " AND DAY(fecha) = " & Day(CDate(fecha_inicial) + i))

If mirecordset.BOF = False And mirecordset.EOF = False Then

dif = dif - 1

End If

End If

Next i



MsgBox "Dias habiles = " & dif, vbInformation, "Resultado"