Access - Rellenar calendario

 
Vista:
sin imagen de perfil

Rellenar calendario

Publicado por Angel (90 intervenciones) el 11/03/2017 14:11:04
Hola, estoy interesado en hacer una base de datos con mi cuadrante de trabajo y buscando ejemplos encontré esta función de Necckito que rellena los días de un año o más en una tabla según pongamos. Pero yo quisiera que me repitiera cada día tres veces, es decir la siguiente sucesión: 01/01/2017 - 01/01/2017 - 01/01/2017 - 02/01/2017 - 02/01/2017 - 02/02/2017 .......). Gracias.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
Public Sub generaFechas()
Dim laFecha As Date
Dim laFechaFin As Date
Dim rst As DAO.Recordset
'Indicamos la fecha inicial en formato inglés
laFecha = #1/1/2017#
'Indicamos la fecha final en formato inglés
laFechaFin = #12/31/2017#
'Creamos el recordset sobre la tabla
Set rst = CurrentDb.OpenRecordset("TFechas", dbOpenTable)
'Iniciamos el proceso de rellenado
Do Until laFecha = laFechaFin + 1
With rst
.AddNew
.Fields("cFecha").Value = Format(laFecha, "dd/mm/yy")
.Update
End With
laFecha = laFecha + 1
Loop
'Lanzamos un mensaje de aviso
MsgBox "Proceso de llenado finalizado correctamente", vbInformation, "OK"
End Sub
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Norberto
Val: 783
Oro
Ha mantenido su posición en Access (en relación al último mes)
Gráfica de Access

Rellenar calendario

Publicado por Norberto (723 intervenciones) el 28/03/2017 15:14:08
Hola.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
Public Sub generaFechas()
    Dim laFecha As Date
    Dim laFechaFin As Date
    Dim rst As DAO.Recordset
    '****
    Dim i As Integer
    '****
 
    'Indicamos la fecha inicial en formato inglés
    laFecha = #1/1/2017#
    'Indicamos la fecha final en formato inglés
    laFechaFin = #12/31/2017#
    'Creamos el recordset sobre la tabla
    Set rst = CurrentDb.OpenRecordset("TFechas", dbOpenTable)
    'Iniciamos el proceso de rellenado
    Do Until laFecha = laFechaFin + 1
        '****
        For i = 1 To 3
        '****
            With rst
                .AddNew
                .Fields("cFecha").Value = Format(laFecha, "dd/mm/yy")
                .Update
            End With
        '****
        Next
        '****
        laFecha = laFecha + 1
    Loop
    'Lanzamos un mensaje de aviso
    MsgBox "Proceso de llenado finalizado correctamente", vbInformation, "OK"
End Sub

Lo único es que debes de tener en cuenta que la cFecha no puede ser ni clave principal ni indexado sin repetidos

Un saludo,

Norberto.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Rellenar calendario

Publicado por Anonimo (1976 intervenciones) el 28/03/2017 17:08:21
Mas concentrado, utilizando recursos propios de Access (modificado sobre el codigo posteado original):

1
2
3
4
5
6
7
8
9
10
11
12
Public Sub generaFechas(Inicio As Date, Fin As Date)
    Dim rst As DAO.Recordset
    Dim i As Double
    Set rst = CurrentDb.OpenRecordset("TFechas", dbOpenTable)
    With rst
    For i = CDbl(Inicio) To CDbl(Fin) Step 1 / 3
          .AddNew
          .Fields("cFecha") = i
          .Update
          Next
    End With
End Function

Se aplicaria asi:

generaFechas fecha1, fecha2
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Rellenar calendario

Publicado por Angel (90 intervenciones) el 29/03/2017 22:32:12
La verdad es que pensaba ya no contestarían a esta pregunta. Ya lo he probado y ambas funciones van bien.Os agradezco vuestras intervenciones.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar