Programa de turnos

Programa hecho en Visual Basic 6, para llevar el control de turnos del personal  de una empresa.

El programa enlaza con una base de datos de access 2000 que es la que guarda todos los datos.

Para hacer los meses se han utilizado 12 Msflexgrid para los meses y de 7 x 6 casillas para los dias, que se cargan al iniciar el formulario y se rellenan automaticamente con los dias del año.

Se pueden colorear los días gracias a la propiedad ‘CellBackColor’ del control

Seleccionando un trabajador de la lista, nos marca en colores todo el calendario laboral y los turnos (mañana, tarde, festivo, vacacion)  de ese trabajador para todos los meses. Luego estos datos se pueden exportar a excel, imprimir etc.

 

Para rellenar las casillas se han utilizado la siguiente función que  dibuja los meses y llama a ‘rellenarMes’ que pone los dias:

Private Sub rellenarcalendario(ano)
Dim a As Integer
For a = 0 To 11 ' los 12 meses
FLEXGRID(a).Redraw = False
rellenarMES FLEXGRID(a), a + 1, ano
FLEXGRID(a).Redraw = True
Next
End Sub
 

Y la funcion ‘rellenarMes’ que pone los días:

Function rellenarMES(MSF1 As MSFlexGrid, mes, ano)
With MSF1
.Width = 2120
.Height = 1700
Dim a As Integer
For a = 0 To 6
.ColWidth(a) = 300
Next
'poner dias de la semana en 1ª fila------
.Row = 0
.Col = 0
.Text = "L"
.Col = 1
.Text = "M"
.Col = 2
.Text = "X"
.Col = 3
.Text = "J"
.Col = 4
.Text = "V"
.Col = 5
.Text = "S"
.Col = 6
.Text = "D"
'-----------------------------------
Dim Startday As Date
Dim FinalDay As Date
Dim DayofWeek
Dim CurYear
Dim CurMonth
Dim contador As Integer
Dim valorcelda As Integer
Startday = DateValue("1/" & mes & "/" & ano)
DayofWeek = Weekday(Startday) - 1 ' primer dia de la semana = lunes
       CurYear = Year(Startday)
       CurMonth = Month(Startday)
       FinalDay = DateSerial(CurYear, CurMonth + 1, 1)
       '----------------------
borrar_casillas MSF1
Dim empezar
.Row = 1
Select Case DayofWeek
           Case 1
           .Col = 0: .Text = 1
               empezar = 0 ' empezar en la siguiente celda si es lunes
           Case 2
              .Col = 1: .Text = 1
               empezar = 1
           Case 3
               .Col = 2: .Text = 1
               empezar = 2
           Case 4
               .Col = 3: .Text = 1
               empezar = 3
           Case 5
               .Col = 4: .Text = 1
               empezar = 4
           Case 6
               .Col = 5: .Text = 1
                empezar = 5
           Case 0
               .Col = 6: .Text = 1 ' si es domingo
               empezar = 6
End Select
Dim b As Integer
'--------------------------------------
contador = 0
For b = 1 To 6 ' filas
For a = 0 To 6 ' columnas
.Col = a
    If b = 1 And a >= empezar Then ' primera fila
    .Text = contador + 1  ' rellenar 1ª fila  columnas 1 a 6
    contador = contador + 1
    End If
   If b > 1 Then
    .Row = b
     ' para rellenar el resto de filas
            .Text = contador + 1
                    If .Text > (FinalDay - Startday) Then ' final
                      .Text = ""
                      Exit For
                    End If
        contador = contador + 1
        valorcelda = (FinalDay - Startday)
    End If
Next
Next
End With
End Function