Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

alexandremanowar

Escala de trabalho

Recommended Posts

Olá, estou com um problemão é seguinte:

Estou desenvolvendo um sistema de escala de trabalho como por exemplo escala 4x1, presico que o sistema calcule toda escala de janeiro até dezembro, mostrando na tela os dias do mês que o cara vai trabalhar, os dias que vai folgar e o dia de semana que cada um vai cair e mais quando a escala chegar no mês de dezembro, deverá iniciar o próximo ano automáticamente continuando a contagem do mês de dezembro para janeiro, deverá identificar também quando o ano for bi-sexto.

E o pior apenas sei trabalhar com ListView e o meu chefe quer essa apresentação com matrix, eu não sei trabalhar com a opção Matrix do vb o que eu faço?

Alguém pode me ajudar http://forum.imasters.com.br/public/style_emoticons/default/upset.gif

Compartilhar este post


Link para o post
Compartilhar em outros sites

cara, posso te ajudar no cálculo:

 

Private Function Bissexto(Ano As Integer) As Boolean

    Dim Data  As String

 

    If Ano = 0 Then Exit Function

    Data = ("29-2-" & Ano)

    Bissexto = IsDate(Data)

'      Bissexto = True  ->      é bissexto

'      Bissexto = False  ->não é bissexto, ou não é um ano válido

'fonte: http://www.linhadecodigo.com.br/dicas.asp?id_dica=1⊂=13

End Function

 

Private Sub Command1_Click()

  Dim DiasTrab      As Integer

  Dim DiasFolga    As Integer

  Dim DiasTotTrab  As Integer

  Dim DiasTotFolga  As Integer

  Dim DataInicial  As Date

  Dim DataFinal    As Date

 

  DataInicial = Date 'data inicial para os testes

  DataFinal = Date + 180 'pode ser qualquer data, este é apenas um exemplo

 

  DiasTrab = 4

  DiasFolga = 1

 

  DiasTotTrab = 0

  DiasTotFolga = 0

 

  Text1.Text = ""

 

  If Bissexto(Year(DataInicial)) = True Then

    Text1.Text = Text1.Text & "Ano Bissexto (" & Year(DataInicial) & ")" & vbCrLf

  Else

    Text1.Text = Text1.Text & "Ano Não é Bissexto (" & Year(DataInicial) & ")" & vbCrLf

  End If

 

   

  While DataInicial < DataFinal

    DoEvents

   

    Select Case Weekday(DataInicial)

      Case 2, 3, 4, 5, 6 'processa só dia de semana

        'verificar se está no período de trabalho

        If DiasTotTrab < DiasTrab Then

          DiasTotTrab = DiasTotTrab + 1

          Text1.Text = Text1.Text & "Trabalha em  " & Format(DataInicial, "long date") & vbCrLf

        Else

          'verificar se está em periodo de folga

          If DiasTotFolga < DiasFolga Then

            DiasTotFolga = DiasTotFolga + 1

            Text1.Text = Text1.Text & "Não trabalha em  " & Format(DataInicial, "long date") & vbCrLf

            'se o total atual de folgas for maior ou igual ao total geral, então finaliza o processo

            If DiasTotFolga >= DiasFolga Then

              DiasTotTrab = 0

              DiasTotFolga = 0

            End If

          End If

        End If

    End Select

    DataInicial = DataInicial + 1

    'como está acrescentando data, o VB possui verificação automatica de data, ou seja,

    'se a data for inválida, automaticamente passa para a próxima válida, contudo,

    'se quiser verificar se o ano é bissexto, basta saber se o resto da divisão por 4 é 0

    If Year(DataInicial) <> Year(DataFinal) Then

      If Bissexto(Year(DataInicial)) = True Then

        Text1.Text = Text1.Text & "Ano Bissexto (" & Year(DataInicial) & ")" & vbCrLf

      Else

        Text1.Text = Text1.Text & "Ano Não é Bissexto (" & Year(DataInicial) & ")" & vbCrLf

      End If

    End If

  Wend

End Sub

essa opção Matrix não conheço, e não vi ainda.

No exemplo tá usando TextBox.

flws

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ok camarada, valeu pela força, vou aproveitar seu código no meu sistema.Assim que eu descobrir como usar o Matrix mando uma cópia para você!Até mais :D

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.