Loop a partir de un rango de fechas

Quiero agregar a un subformulario "DiasLicencias" la cantidad de registros de acuerdo a un rango del formulario "Empleados"

Los campos de Empleados son

FInicio(Fecha) ej:26/07/2018

FFinal(Fecha) ej: 28/07/2018

Necesito que al hacer click en un boton vaya agregando los registros al subformulario hasta la condicion dada por "FFinal"

Ej Sub formulario "DiasLicencias(campos FechaT, Descripcion):

26/07/2018 Vacaciones

27/07/2018 Vacaciones

28/07/2018 Vacaciones

Respuesta
3

Yo te propongo algo más simple (en el sentido de que hay que escribir muchísimo menos), que es lo que Jacinto te sugiere al final de su respuesta (usar una SQL).

Utilizando los mismos datos del ejemplo de Jacinto, sería:

Private Sub BtnCreaRegistros_Click()
Dim i AS Date
For i=Me.FInicio To Me.FFin
   CurrentDb.Execute "INSERT INTO TblAusencias(IdEmpleado,FechaAusente,Motivo) VALUES(" & Me.IdEmpleado & ",#" & i & "#,'Vacaciones'")
Next i
End Sub

Un saludo.


     bit.ly/ForoNkSv 

1 respuesta más de otro experto

Respuesta
2

Leandro: Cuando dices que quieres añadir unos registros a un Sub Formulario, interpreto que lo que pretendes es "añadir" unos registros a una Tabla y que se muestren en un Sub Formulario.

Si eso es así, haré varias suposiciones de Nombres de Objetos y tu los adecúas a los tuyos.

El sub Formulario ni lo cito, porque has de construirlo según los datos de la Tabla que voy a Nombrar como >> TblAusencias con 3 Campos: IdEmpleado, FechaAusente y Motivo.

Tres "Controles" Independientes en el Formulario Empleados, con los Nombres de: FInicio, FFin y el IdEmpleado (que en tu caso ya debes tener). Un Botón que llamaré >> BtnCreaRegistros

El código que has de poner en ese botón citado es el Siguiente.

Private Sub BtnCreaRegistros_Click()
'Nota Inicial: No olvidar dar de alta la Referencia: Microsoft Office xx.y Access database engine Object Library.
'En Heramientas >> Referencias .............
Dim StrSQL As String
Dim Rst As DAO.Recordset
Dim NumDia As Integer, TotalDias As Integer
'Me aseguro que FIni y FechaFin están llenas y son Fechas
If IsDate(Me.FInicio) And IsDate(Me.FFin) Then
        StrSQL = ""
        'Hago el cálculo de los días que he de Insertar en la Tabla
        TotalDias = DateDiff("d", Me.FInicio, Me.FFin)
        'Ahora abro un Recordset sobre la Tabla, para grabar los días desde FInicio a FFin
        StrSQL = "SELECT * From TblAusencias;"
        Set Rst = CurrentDb.OpenRecordset(StrSQL, dbOpenDynaset)
        For NumDia = 0 To TotalDias
                Rst.AddNew
                        Rst!IdEmpleado = Me.IdEmpleado
                        Rst!FechaAusente = Me.FInicio + NumDia
                        Rst!Motivo = "Vacaciones"
                Rst.Update
        Next
        StrSQL = ""
        'Cierro el Recordset y libero Recursos
        Rst.Close
        Set Rst = Nothing
Else
        MsgBox "La Fecha de Inicio o la de Fin o ambas están vacías o tienen un valor incorrecto", vbCritical, "REPASA LAS FECHAS"
End If
End Sub

Es una forma de hacerlo, pero no la única, y si quieres indagar por tu cuenta, mira el concepto de una SQL de Inserción de datos.

Un saludo >> Jacinto

Disculpa Leandro, porque he olvidado enviarte una imagen con el resultado de ese código y la operativa descrita.

Un saludo >> Jacinto

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas