Access - Error de compilación: Procedimiento demasiado largo

 
Vista:
sin imagen de perfil
Val: 6
Ha aumentado su posición en 4 puestos en Access (en relación al último mes)
Gráfica de Access

Error de compilación: Procedimiento demasiado largo

Publicado por Javier (11 intervenciones) el 20/10/2021 10:37:03
Antes de describir mi problema he de aclarar que no tengo muchos conocimientos de access, estoy intentando crear un formulario donde pueda registrar las horas trabajadas en un mes, los campos que he creado son ID, mes, año, trabajador, obra y los días del 1 al 31, mi intención es que cuando seleccione en el formulario principal un mes y un año me aparezcan en un subformulario sombreados los días que son fines de semana y festivos, en los campos del 1 al 31 introduzco las horas, como he comentado antes no tengo muchos conocimientos y lo he hecho de la siguiente forma y funciona:

El problema ocurre que cuando ejecuto el formulario en mi pc, todo funciona perfecto, pero cuando lo hago en otro ordenador me da el mensaje de error de compilación, Procedimiento demasiado largo y es que el procedimiento que he puesto es el siguiente, existe alguna forma de crear alguna variable que pueda solucionarme el problema, ya que ahora al no saber he creado un formulario con subformulario para cada año.

Private Sub C_MES_AfterUpdate()
Dim DD As Long, SS As Long, FF As Long
FF = RGB(255, 1, 0)
SS = RGB(179, 179, 179)
DD = RGB(255, 153, 51)
NN = RGB(255, 255, 255)
NL = RGB(153, 205, 153)
If Me.C_MES = "ENERO" Then
[S-Calendario].Form![D1].BackColor = FF
[S-Calendario].Form![T1].BackColor = FF
[S-Calendario].Form![D2].BackColor = SS
[S-Calendario].Form![T2].BackColor = SS
[S-Calendario].Form![D3].BackColor = DD
[S-Calendario].Form![T3].BackColor = DD
[S-Calendario].Form![D4].BackColor = NN
[S-Calendario].Form![T4].BackColor = NN
[S-Calendario].Form![D5].BackColor = NN
[S-Calendario].Form![T5].BackColor = NN
[S-Calendario].Form![D6].BackColor = FF
[S-Calendario].Form![T6].BackColor = FF
[S-Calendario].Form![D7].BackColor = NN
[S-Calendario].Form![T7].BackColor = NN
[S-Calendario].Form![D8].BackColor = NN
[S-Calendario].Form![T8].BackColor = NN
[S-Calendario].Form![D9].BackColor = SS
[S-Calendario].Form![T9].BackColor = SS
[S-Calendario].Form![D10].BackColor = DD
[S-Calendario].Form![T10].BackColor = DD
[S-Calendario].Form![D11].BackColor = NN
[S-Calendario].Form![T11].BackColor = NN
[S-Calendario].Form![D12].BackColor = NN
[S-Calendario].Form![T12].BackColor = NN
[S-Calendario].Form![D13].BackColor = NN
[S-Calendario].Form![T13].BackColor = NN
[S-Calendario].Form![D14].BackColor = NN
[S-Calendario].Form![T14].BackColor = NN
[S-Calendario].Form![D15].BackColor = NN
[S-Calendario].Form![T15].BackColor = NN
[S-Calendario].Form![D16].BackColor = SS
[S-Calendario].Form![T16].BackColor = SS
[S-Calendario].Form![D17].BackColor = DD
[S-Calendario].Form![T17].BackColor = DD
[S-CALENDARIO].Form![D18].BackColor = NN
[S-CALENDARIO].Form![T18].BackColor = NN
[S-CALENDARIO].Form![D19].BackColor = NN
[S-CALENDARIO].Form![T19].BackColor = NN
[S-CALENDARIO].Form![D20].BackColor = NN
[S-CALENDARIO].Form![T20].BackColor = NN
[S-CALENDARIO].Form![D21].BackColor = NN
[S-CALENDARIO].Form![T21].BackColor = NN
[S-CALENDARIO].Form![D22].BackColor = NN
[S-CALENDARIO].Form![T22].BackColor = NN
[S-CALENDARIO].Form![D23].BackColor = SS
[S-CALENDARIO].Form![T23].BackColor = SS
[S-CALENDARIO].Form![D24].BackColor = DD
[S-CALENDARIO].Form![T24].BackColor = DD
[S-CALENDARIO].Form![D25].BackColor = NN
[S-CALENDARIO].Form![T25].BackColor = NN
[S-CALENDARIO].Form![D26].BackColor = NN
[S-CALENDARIO].Form![T26].BackColor = NN
[S-CALENDARIO].Form![D27].BackColor = NN
[S-CALENDARIO].Form![T27].BackColor = NN
[S-CALENDARIO].Form![D28].BackColor = NN
[S-CALENDARIO].Form![T28].BackColor = NN
[S-CALENDARIO].Form![D29].BackColor = NN
[S-CALENDARIO].Form![T29].BackColor = NN
[S-CALENDARIO].Form![D30].BackColor = SS
[S-CALENDARIO].Form![T30].BackColor = SS
[S-CALENDARIO].Form![D31].BackColor = DD
[S-CALENDARIO].Form![T31].BackColor = DD
[S-CALENDARIO].Form![L].Visible = False
[S-CALENDARIO].Form![M].Visible = False
[S-CALENDARIO].Form![X].Visible = False
[S-CALENDARIO].Form![J].Visible = False
[S-CALENDARIO].Form![V].Visible = True
[S-CALENDARIO].Form![S].Visible = False
[S-CALENDARIO].Form![D].Visible = False
[S-CALENDARIO].Form![D29].Visible = True
[S-CALENDARIO].Form![T29].Visible = True
[S-CALENDARIO].Form![D30].Visible = True
[S-CALENDARIO].Form![T30].Visible = True
[S-CALENDARIO].Form![D31].Visible = True
[S-CALENDARIO].Form![T31].Visible = True
[S-CALENDARIO].Form![X28].Visible = False
[S-CALENDARIO].Form![X31].Visible = False
ElseIf Me.C_MES = "FEBRERO" Then
[S-CALENDARIO].Form![D1].BackColor = NN
[S-CALENDARIO].Form![T1].BackColor = NN
etc....
ElseIf Me.C_MES = "MARZO" Then

Y así hasta Diciembre
7726a1e05b0305a212eaed0f5c29696c
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

Error de compilación: Procedimiento demasiado largo

Publicado por Anonimo (2502 intervenciones) el 20/10/2021 21:14:01
Access tiene un limite de objetos en el formulario (y un objeto es un objeto: un cuadro de texto una etiqueta, una línea un ....)

Con una variable (o unas cuantas) se puede resolver, pero la solución siempre pasara por un por un análisis y crear estructuras lógicas que con bucles permitan manejar los datos de forma coherente.

Hay excelentes ejemplos de creación de calendarios para agendar citas que utilizan esa forma de programar y que (al ser de código abierto) pueden ser útiles para avanzar un paso en la programación.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil
Val: 6
Ha aumentado su posición en 4 puestos en Access (en relación al último mes)
Gráfica de Access

Error de compilación: Procedimiento demasiado largo

Publicado por Javier (11 intervenciones) el 21/10/2021 08:14:08
Muchas gracias por tu aporte
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
Imágen de perfil de Joan
Val: 414
Bronce
Ha mantenido su posición en Access (en relación al último mes)
Gráfica de Access

Error de compilación: Procedimiento demasiado largo

Publicado por Joan (14 intervenciones) el 20/10/2021 21:40:25
Hola,

Yo me lo plantearía de otra manera este calendario. Por lo que veo es un formulario continuo o eso me parece a mí. Crearía otra línea encima de los días, donde puedes escribir F(Festivo), S(Sábado), D(Domingo), o en blanco si es laboral, así te sirve para todos los años. Usando el Formato condicional le indicarías los colores que quieres que tenga ese textbox, y te aparecería en todos los registros que crearas siguientes. Te ahorraría mucho código.

Suerte.

Un saludo,
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil
Val: 6
Ha aumentado su posición en 4 puestos en Access (en relación al último mes)
Gráfica de Access

Error de compilación: Procedimiento demasiado largo

Publicado por Javier (11 intervenciones) el 21/10/2021 08:15:08
Gracias Joan por tu sugerencia, un saludo
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