Insertar eventos periódicos en access

Hola y gracias de antemano
Lo que deseo hacer es, mediante un procedimiento de evento en access2000 generar varios registros en una tabla que hace de calendario, indicándole la periodicidad entre dos fechas.
Por ejemplo, en evento reunión, se produce los lunes de 10:00 a 12:00 todos los lunes entre la fecha inicial y la final.
Mediante el formulario, mediante un botón generado con el asistente, me inserta solo el primero, pero luego me indica que no encuentra el registro y me da error, aunque le pongo un bucle con la condición entre fechas.
Las fechas tienen el formato de fecha corta 'dd/mm/yyyy' y no se si se salta el bucle, o lo utilizo mal al tratarse de fechas.
La tabla destino tiene los campos Id, evento, fecha, hora inicio, hora fin.
Todo un reto.

1 respuesta

Respuesta
1
Para poder ayudarte me gustaría ver la función que estas utilizando y como estas hacinedo el bluque...
Este es el código del botón 'generar eventos' en el formulario, donde indico el evento que se repite, el día de la semana, así como la fecha y hora de inicio y final.
Private Sub bt_generar_dias_Click()
On Error GoTo Err_bt_generar_dias_Click
Dim datInicial, datFinal, datDia As Date
Dim srtdiasemana As String
        'Establezco el dia de la semana
If Me.diasemana = "Lunes" Then
srtdiasemana = 1
If Me.diasemana = "Martes" Then
srtdiasemana = 2
If Me.diasemana = "Miercoles" Then
srtdiasemana = 3
End If
If Me.diasemana = "Jueves" Then
srtdiasemana = 4
End If
If Me.diasemana = "Miercoles" Then
srtdiasemana = 5
End If
If Me.diasemana = "Viernes" Then
srtdiasemana = 6
End If
If Me.diasemana = "Sabado" Then
srtdiasemana = 7
End If
        'Establezco el bucle entre la fecha inicial y final
datInicial = Me.Fechaini
datFinal = Me.Fechafin
datDia = datInicial
Do While datDia < datFinal
        ' Compruebo que la fecha corresponda al día de la semana, y si es así escribo un nuevo registro (es id es un autoincrementable)
    If Weekday(datDia, strdiasemana) Then
        Me.Dia = datDia
        DoCmd.GoToRecord , , acNewRec
        datDia = datDia + 1
    Else
        datDia = datDia + 1
    End If
Loop
Exit_bt_generar_dias_Click:
    Exit Sub
Err_bt_generar_dias_Click:
    MsgBox Err.Description
    Resume Exit_bt_generar_dias_Click
End Sub
Presupongo que es un pequeño desastre.
Disculpa hay un error en la asignación del día de la semana. Lo coorecto es:
If Me.diasemana = "Lunes" Then
srtdiasemana = 1
If Me.diasemana = "Martes" Then
srtdiasemana = 2
If Me.diasemana = "Miercoles" Then
srtdiasemana = 3
End If
If Me.diasemana = "Jueves" Then
srtdiasemana = 4
End If
If Me.diasemana = "Viernes" Then
srtdiasemana = 5
End If
If Me.diasemana = "Sabado" Then
srtdiasemana = 6
End If
If Me.diasemana = "Domingo" Then
srtdiasemana = 7
End If
Pero no obstante lo importante es saber si he de utilizar esa función u otra, y utilizarla bien.
Para que tu código funcione solo le hace falta unos arreguitos, grabar el registro y un error en el if y tal vez podrías hacerlo más eficiente con otra variable auxiliar
k=1 '''la variable auxiliar
Do While datDia < datFinal
    If Weekday(datDia, strdiasemana) Then
       DoCmd.GoToRecord , , acNewRec
       Me.Dia = datDia 
       DoCmd.DoMenuItem acFormBar, acRecordsMenu, acSaveRecord, , acMenuVer70
       k=7
    End if
    datDia = datDia + k  
Loop

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas