Diferencia de fechas sin contar los fines de semana

Os cuento tengo una tabla con dos fechas, inicio y fin y otro registro que es diferencia de días n access 2010 con un simple cuadro calculado y poniendo en expresión: [fin]-[inicio], me calcula la diferencia de dís pero ya sabéis necesito que en esa diferencia no me cuente los días de fin de semana (sábados y domingos), si me pudieras ayudar a hacerlo y como hacerlo paso a paso os lo agradecería.

1 Respuesta

Respuesta
2

Iñigo: En éste enlace de la WEb de Neckkito tienes esa solución y algún complemento.

http://siliconproject.com.ar/neckkito/index.php/ejemplos-explicados/codigo/95-ejemplos-explicados/ejemplos-de-codigo/135-contar-dias-2 

Mis saludos >> Jacinto

a ver me he estado pegando y he copiado por ahi un modulo que es este:

Option Compare Database

Option Explicit

Public Function DiasLaborables( _

                    ByVal FechaDesde As Date, _

                    ByVal FechaHasta As Date) _

                    As Long

    Dim datAuxiliar As Date

    Dim lngDiaSemana As Long

    Dim lngDias As Long

    If FechaHasta < FechaDesde Then

        datAuxiliar = FechaDesde

        FechaDesde = FechaHasta

        FechaHasta = datAuxiliar

    End If

    For datAuxiliar = FechaDesde To FechaHasta

        lngDiaSemana = DatePart( _

                        "w", _

                        datAuxiliar, _

                        vbMonday)

        'vbMonday considera el lunes como día Nº 1

        Select Case lngDiaSemana

            Case 1 To 6    'lunes a Sabado

                If EsDiaLaboral(datAuxiliar) Then

                    lngDias = lngDias + 1

                End If

        End Select

    Next datAuxiliar

    DiasLaborables = lngDias

End Function

Public Function EsDiaLaboral( _

                    ByVal Dia As Date) _

                    As Boolean

    Dim strFecha As String

    Dim varPrueba As Variant

    strFecha = "#" _

    & CStr(Month(Dia)) _

    & "/" _

    & CStr(Day(Dia)) _

    & "/" _

    & CStr(Year(Dia)) _

    & "#"

    varPrueba = DLookup("Fecha", "Fiestas", "[Fecha] =" _

    & strFecha)

    'Si encuentra la fecha en la tabla devuelve esa fecha

    'que se asigna a la variable varPrueba

    'Si no existe la fecha varPrueba valdrá Null

    'IsNull devuelve True o False

    EsDiaLaboral = IsNull(varPrueba)

End Function

cree la tabla de festivos, con sus fechas y también un boton que es este:

Private Sub Comando6_Click()

Dim rst As DAO.Recordset, i As Long

Set rst = Me.RecordsetClone

rst.MoveFirst

Do Until rst.EOF = True

If IsNull(rst("dias")) Then

rst.Edit

i = DiasLaborables(rst("freci"), rst("Fsoli"))

rst("dias") = i

rst.Update

End If

rst.MoveNext

Loop

Me.Recalc

rst.Close

Set rst = Nothing

End Sub

Pero nada, no me sale nada no soy capaz y me da errores en el codigo del boton, si me pudierais ayudar, gracias.

Iñigo: Hasta hace un par de días he estado fuera y no he podido contestar antes.

La verdad es que ese código de las dos Funciones que me envías, hace falta verlo en su entorno.

Ignoro la razón de un RecordsetClone para esa tarea, aunque si lo usas será justificado, pero en el ejemplo que te comenté arriba, tienes soluciones muy simples de contar los días.

Si es que quieres usar otra metodología, tendría que tener tu BD,(con datos inventados), para ver la estructura y como encajar el código en la misma. Mis saludos >> Jacinto

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas