MaximoAccess

Caro Usuário, antes de postar pela primeira vez, leia as regras do fórum.

https://www.maximoaccess.com/t48-regras-do-forum

Obrigado

Administração


Participe do fórum, é rápido e fácil

MaximoAccess

Caro Usuário, antes de postar pela primeira vez, leia as regras do fórum.

https://www.maximoaccess.com/t48-regras-do-forum

Obrigado

Administração

MaximoAccess

Gostaria de reagir a esta mensagem? Crie uma conta em poucos cliques ou inicie sessão para continuar.

Dicas Ms Access, Exemplos Ms Access, Codigos VBA Ms Access, SQL Ms Access


+2
Alexandre Neves
dteixa
6 participantes

    [Resolvido]Escala de Serviço

    Assis
    Assis
    Maximo VIP
    Maximo VIP


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 4772
    Registrado : 06/11/2009

    [Resolvido]Escala de Serviço - Página 2 Empty Re: [Resolvido]Escala de Serviço

    Mensagem  Assis 20/12/2012, 12:56

    Boas Alexandre
    É a partir deste formulario que eu defino as datas e o numero de turnos, e queria também definir o numero de operadores por turno.
    Este formulário tem o nome "rotina".

    Esta que está em baixo dá para o quarto.
    Se copiar para mais abaixo e mudar o numero 4 para 5, faz a rotina para 5 operadores. Certo ?

    RstTurnos(Turno + 1) = RstTurnos(Turno + 1) & "," & RstOperadores("Letra")
    RstOperadores.MoveNext
    If RstOperadores.EOF Then RstOperadores.MoveFirst
    Verifica4:
    If Not Trabalha(RstOperadores("Nome"), dtData) Then
    RstTurnos("Ausencia") = RstTurnos("Ausencia") & RstOperadores("Letra") & ","
    If RstOperadores.EOF Then RstOperadores.MoveFirst Else RstOperadores.MoveNext
    GoTo Verifica4
    End If


    .................................................................................
    *** Só sei que nada sei ***
    dteixa
    dteixa
    Avançado
    Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 281
    Registrado : 15/01/2012

    [Resolvido]Escala de Serviço - Página 2 Empty Re: [Resolvido]Escala de Serviço

    Mensagem  dteixa 21/12/2012, 18:54

    ASSIS
    já testei a tua versão em 6 PCs e em todos da o mesmo ao abrir o frmcalendar( bloqueio)
    Assis
    Assis
    Maximo VIP
    Maximo VIP


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 4772
    Registrado : 06/11/2009

    [Resolvido]Escala de Serviço - Página 2 Empty Re: [Resolvido]Escala de Serviço

    Mensagem  Assis 21/12/2012, 19:06

    Todos 2010

    Teste este ... no 2010


    .................................................................................
    *** Só sei que nada sei ***
    dteixa
    dteixa
    Avançado
    Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 281
    Registrado : 15/01/2012

    [Resolvido]Escala de Serviço - Página 2 Empty Re: [Resolvido]Escala de Serviço

    Mensagem  dteixa 21/12/2012, 19:47

    este sim, funciona cheers
    dteixa
    dteixa
    Avançado
    Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 281
    Registrado : 15/01/2012

    [Resolvido]Escala de Serviço - Página 2 Empty Re: [Resolvido]Escala de Serviço

    Mensagem  dteixa 23/12/2012, 00:13

    Boas Alexandre
    em relaçãoa rotatividade a unica logica que vejo é fazer uma tabela ou consulta com todas as duplas de operadores possiveis ex.(AB, CD, AD, ETC....) e depois obrigar essas parelhas a fazer 3 turnos seguidos do tipo Tarde, manha e noite e a seguir um, dois ou tres dias de folga conforme as duplas que sobrarem.
    Diz se assim é possivel.
    Abraço
    Alexandre Neves
    Alexandre Neves
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 8449
    Registrado : 05/11/2009

    [Resolvido]Escala de Serviço - Página 2 Empty Re: [Resolvido]Escala de Serviço

    Mensagem  Alexandre Neves 23/12/2012, 01:35

    Boa noite, dteixa
    E algum deles (ou os dois) estiverem de folga? As parelhas fazem-se dia-a-dia. Se algum estiver de folga, só entra no giro seguinte?
    Tenho pensado em várias possibilidades e sempre encontro falta de lógica


    .................................................................................
    Access 2010. Mande bd que dê para testar (indique a versão). Não peça para fazer o que já tem feito. Dê todos os detalhes.
    Não coloquem entraves como senhas, esconder controlos, etc. Disponibilizem o mais limpo possível
    Só respondo a mensagens privadas, se forem de assunto privado; às outras não respondo.
    Quem trabalha e mata a fome não come o pão de ninguém; mas quem não trabalha e come, come sempre o pão de alguém. António Aleixo
    dteixa
    dteixa
    Avançado
    Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 281
    Registrado : 15/01/2012

    [Resolvido]Escala de Serviço - Página 2 Empty Re: [Resolvido]Escala de Serviço

    Mensagem  dteixa 23/12/2012, 01:42

    espera 5 minutos, vou ver aki as parelhas
    dteixa
    dteixa
    Avançado
    Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 281
    Registrado : 15/01/2012

    [Resolvido]Escala de Serviço - Página 2 Empty Re: [Resolvido]Escala de Serviço

    Mensagem  dteixa 23/12/2012, 02:01

    Bem, pelas minhas contas há 45 possibilidades de fazer parelhas, agora é uma questão do codigo verificar a parelha seguinte e se uma letra estiver na ausencia, ele passa automaticamente a parelha seguinte ate encontrar duas letras que não estejão nas ausencias.
    axas que assim dá?

    AB-AC-AD-AF-AG-AH-AJ-AK-AL-BC-BD-BF-BG-BH-BJ-BK-BL-CD-CF-CG-CH-CJ-CK-CL-DF-DG-DH-DJ-DK-DL-FG-FH-FJ-FK-FL-GH-GJ-GK-GL-HJ-HK-HL-JK-JL-KL
    dteixa
    dteixa
    Avançado
    Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 281
    Registrado : 15/01/2012

    [Resolvido]Escala de Serviço - Página 2 Empty Re: [Resolvido]Escala de Serviço

    Mensagem  dteixa 23/12/2012, 02:13

    Observa a escala de dezembro
    sublinhei os turnos do "K" e do "B" para perceberes a logica atual.

    [Resolvido]Escala de Serviço - Página 2 Escala12Ver imagem grande
    Alexandre Neves
    Alexandre Neves
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 8449
    Registrado : 05/11/2009

    [Resolvido]Escala de Serviço - Página 2 Empty Re: [Resolvido]Escala de Serviço

    Mensagem  Alexandre Neves 23/12/2012, 08:59

    Bom dia,
    Qual a lógica a implementar? Fazendo o fluxograma, implementar-se-á em código


    .................................................................................
    Access 2010. Mande bd que dê para testar (indique a versão). Não peça para fazer o que já tem feito. Dê todos os detalhes.
    Não coloquem entraves como senhas, esconder controlos, etc. Disponibilizem o mais limpo possível
    Só respondo a mensagens privadas, se forem de assunto privado; às outras não respondo.
    Quem trabalha e mata a fome não come o pão de ninguém; mas quem não trabalha e come, come sempre o pão de alguém. António Aleixo
    dteixa
    dteixa
    Avançado
    Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 281
    Registrado : 15/01/2012

    [Resolvido]Escala de Serviço - Página 2 Empty Re: [Resolvido]Escala de Serviço

    Mensagem  dteixa 27/12/2012, 17:18

    Boas
    estamos de volta depois de umas curtas ferias para o natal,

    Alexandre não sei mesmo que tipo de logica se pode por aqui porque a logica vai ser quebrada quando houver ausencias,
    se não for muita maçada para ti tenta por os turnos nesta sequencia dia 1-Tarde, dia 2-Manha e dia 3-Noite de seguida as folgas de acordo com os operadores restantens.
    obrigado
    Alexandre Neves
    Alexandre Neves
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 8449
    Registrado : 05/11/2009

    [Resolvido]Escala de Serviço - Página 2 Empty Re: [Resolvido]Escala de Serviço

    Mensagem  Alexandre Neves 27/12/2012, 19:26

    Ainda não vi lógica para a situação.
    Porque não é fácil fazer escalas, existem especialistas no assunto: http://www.escalafacil.com.br/index.php


    .................................................................................
    Access 2010. Mande bd que dê para testar (indique a versão). Não peça para fazer o que já tem feito. Dê todos os detalhes.
    Não coloquem entraves como senhas, esconder controlos, etc. Disponibilizem o mais limpo possível
    Só respondo a mensagens privadas, se forem de assunto privado; às outras não respondo.
    Quem trabalha e mata a fome não come o pão de ninguém; mas quem não trabalha e come, come sempre o pão de alguém. António Aleixo
    Assis
    Assis
    Maximo VIP
    Maximo VIP


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 4772
    Registrado : 06/11/2009

    [Resolvido]Escala de Serviço - Página 2 Empty Re: [Resolvido]Escala de Serviço

    Mensagem  Assis 27/12/2012, 20:04

    Boa noite Alexandre

    Como corrigir o que se vê na imagem que está n mensagem Nº 50

    Obrigado


    .................................................................................
    *** Só sei que nada sei ***
    Alexandre Neves
    Alexandre Neves
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 8449
    Registrado : 05/11/2009

    [Resolvido]Escala de Serviço - Página 2 Empty Re: [Resolvido]Escala de Serviço

    Mensagem  Alexandre Neves 27/12/2012, 20:26

    Boa noite, Assis
    Disponibiliza bd com dados em concrecto para ver


    .................................................................................
    Access 2010. Mande bd que dê para testar (indique a versão). Não peça para fazer o que já tem feito. Dê todos os detalhes.
    Não coloquem entraves como senhas, esconder controlos, etc. Disponibilizem o mais limpo possível
    Só respondo a mensagens privadas, se forem de assunto privado; às outras não respondo.
    Quem trabalha e mata a fome não come o pão de ninguém; mas quem não trabalha e come, come sempre o pão de alguém. António Aleixo
    Assis
    Assis
    Maximo VIP
    Maximo VIP


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 4772
    Registrado : 06/11/2009

    [Resolvido]Escala de Serviço - Página 2 Empty Re: [Resolvido]Escala de Serviço

    Mensagem  Assis 27/12/2012, 20:40

    Boa noite Alexandre

    Aqui está... Obrigado


    Última edição por Assis em 27/12/2012, 22:35, editado 1 vez(es)


    .................................................................................
    *** Só sei que nada sei ***
    Alexandre Neves
    Alexandre Neves
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 8449
    Registrado : 05/11/2009

    [Resolvido]Escala de Serviço - Página 2 Empty Re: [Resolvido]Escala de Serviço

    Mensagem  Alexandre Neves 27/12/2012, 21:12

    Assis,
    Esta escala está subvertida, pois o mesmo trabalhador pode ser incluído em mais que 1 turno no mesmo dia.
    Mesmo assim, será:
    Option Compare Database
    Option Explicit
    'código criado por Alexandre Neves
    'em 2012-12-15
    'para dteixa
    'do fórum MaximoAccess

    'If DCount("*", "Feriados", "DataFeriado=#" & Format(dtData, "mm-dd-yyyy") & "#") = 0 _
    'And Weekday(dtData) <> 1 And Weekday(dtData) <> 7 Then
    'For Turno = 1 To Forms!Rotina!NTurnos

    Sub CriaTurnos()
    On Error Resume Next
    Dim RstOperadores As DAO.Recordset, RstTurnos As DAO.Recordset
    Dim dtData As Date, Inicio As Date, Fim As Date, Turno As Byte

    Set RstOperadores = CurrentDb.OpenRecordset("SELECT * FROM Operadores;")
    Set RstTurnos = CurrentDb.OpenRecordset("SELECT * FROM Turnos;")
    Inicio = Forms!Rotina!Inicio
    Fim = Forms!Rotina!Fim

    ''''
    CurrentDb.Execute "DELETE * FROM Turnos"
    ''''
    For dtData = Inicio To Fim
    RstTurnos.AddNew
    RstTurnos(1) = dtData
    For Turno = 1 To Forms!Rotina!NTurnos
    If RstOperadores.EOF Then RstOperadores.MoveFirst
    Verifica1:
    If Not Trabalha(RstOperadores("Nome"), dtData) Then
    If InStr(1, RstTurnos("Ausencia"), RstOperadores("Letra")) = 0 Then RstTurnos("Ausencia") = RstTurnos("Ausencia") & RstOperadores("Letra") & ","
    If RstOperadores.EOF Then RstOperadores.MoveFirst Else RstOperadores.MoveNext
    GoTo Verifica1
    End If

    RstTurnos(Turno + 1) = RstOperadores("Letra")
    RstOperadores.MoveNext
    If RstOperadores.EOF Then RstOperadores.MoveFirst
    Verifica2:
    If Not Trabalha(RstOperadores("Nome"), dtData) Then
    If InStr(1, RstTurnos("Ausencia"), RstOperadores("Letra")) = 0 Then RstTurnos("Ausencia") = RstTurnos("Ausencia") & RstOperadores("Letra") & ","
    If RstOperadores.EOF Then RstOperadores.MoveFirst Else RstOperadores.MoveNext
    GoTo Verifica2
    End If

    RstTurnos(Turno + 1) = RstTurnos(Turno + 1) & "," & RstOperadores("Letra")
    RstOperadores.MoveNext
    If RstOperadores.EOF Then RstOperadores.MoveFirst
    Verifica3:
    If Not Trabalha(RstOperadores("Nome"), dtData) Then
    If InStr(1, RstTurnos("Ausencia"), RstOperadores("Letra")) = 0 Then RstTurnos("Ausencia") = RstTurnos("Ausencia") & RstOperadores("Letra") & ","
    If RstOperadores.EOF Then RstOperadores.MoveFirst Else RstOperadores.MoveNext
    GoTo Verifica3
    End If

    RstTurnos(Turno + 1) = RstTurnos(Turno + 1) & "," & RstOperadores("Letra")
    RstOperadores.MoveNext
    If RstOperadores.EOF Then RstOperadores.MoveFirst
    Verifica4:
    If Not Trabalha(RstOperadores("Nome"), dtData) Then
    If InStr(1, RstTurnos("Ausencia"), RstOperadores("Letra")) = 0 Then RstTurnos("Ausencia") = RstTurnos("Ausencia") & RstOperadores("Letra") & ","
    If RstOperadores.EOF Then RstOperadores.MoveFirst Else RstOperadores.MoveNext
    GoTo Verifica4
    End If

    'Ausencia
    RstTurnos(Turno + 1) = RstTurnos(Turno + 1) & "," & RstOperadores("Letra")
    If Len(RstTurnos("Ausencia")) > 0 And right(RstTurnos("Ausencia"), 1) = "," Then RstTurnos("Ausencia") = Mid(RstTurnos("Ausencia"), 1, Len(RstTurnos("Ausencia")) - 1)
    RstOperadores.MoveNext

    Next

    RstTurnos.Update

    Next

    RstTurnos.MoveFirst
    Do While Not RstTurnos.EOF
    RstOperadores.MoveFirst
    RstTurnos.Edit
    Do While Not RstOperadores.EOF

    If InStr(1, RstTurnos(2) & RstTurnos(3) & RstTurnos(4) & RstTurnos("Ausencia"), RstOperadores("Letra")) = 0 Then
    RstTurnos("Descanso") = RstTurnos("Descanso") & RstOperadores("Letra") & ","
    End If

    If RstOperadores.EOF Then RstOperadores.MoveFirst Else RstOperadores.MoveNext
    Loop
    RstTurnos("Descanso") = Mid(RstTurnos("Descanso"), 1, Len(RstTurnos("Descanso")) - 1)
    RstTurnos.Update
    RstTurnos.MoveNext
    Loop
    Set RstTurnos = Nothing: Set RstOperadores = Nothing

    End Sub
    Function Trabalha(Operador As String, dtData As Date) As Boolean
    If DCount("*", "Ausencias", "Operador='" & Operador & "' and #" & Format(dtData, "m-d-yyyy") & "# BETWEEN Inicio and Fim") = 0 Then Trabalha = True
    End Function


    .................................................................................
    Access 2010. Mande bd que dê para testar (indique a versão). Não peça para fazer o que já tem feito. Dê todos os detalhes.
    Não coloquem entraves como senhas, esconder controlos, etc. Disponibilizem o mais limpo possível
    Só respondo a mensagens privadas, se forem de assunto privado; às outras não respondo.
    Quem trabalha e mata a fome não come o pão de ninguém; mas quem não trabalha e come, come sempre o pão de alguém. António Aleixo
    Assis
    Assis
    Maximo VIP
    Maximo VIP


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 4772
    Registrado : 06/11/2009

    [Resolvido]Escala de Serviço - Página 2 Empty Re: [Resolvido]Escala de Serviço

    Mensagem  Assis 27/12/2012, 22:39

    Alexandre

    Então as ausencias estão a aparecer na "Tabela Turnos" no campo "Descanso".

    Mas o campo da mesma tabela "Ausencias para que é ? Pois fica sempre em branco.

    O BD de exemplo já está actualizada na mensagem Nº 65

    Obrigado


    .................................................................................
    *** Só sei que nada sei ***
    Alexandre Neves
    Alexandre Neves
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 8449
    Registrado : 05/11/2009

    [Resolvido]Escala de Serviço - Página 2 Empty Re: [Resolvido]Escala de Serviço

    Mensagem  Alexandre Neves 27/12/2012, 22:45

    Só dei uma vista de olhos e parece que está certo.
    Todos os operadores ou estão ao serviço ou estão em descanso. Só estariam de ausência (por férias, por recessos(?), etc) se nem estivessem ao serviço nem de descanso


    .................................................................................
    Access 2010. Mande bd que dê para testar (indique a versão). Não peça para fazer o que já tem feito. Dê todos os detalhes.
    Não coloquem entraves como senhas, esconder controlos, etc. Disponibilizem o mais limpo possível
    Só respondo a mensagens privadas, se forem de assunto privado; às outras não respondo.
    Quem trabalha e mata a fome não come o pão de ninguém; mas quem não trabalha e come, come sempre o pão de alguém. António Aleixo
    Assis
    Assis
    Maximo VIP
    Maximo VIP


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 4772
    Registrado : 06/11/2009

    [Resolvido]Escala de Serviço - Página 2 Empty Re: [Resolvido]Escala de Serviço

    Mensagem  Assis 27/12/2012, 23:58

    Alexandre

    O ideal seria os que estão na tabela Ausencias iam para a coluna "Ausencia" na tabela Turnos.
    Os que não estiverem escalados vão para a coluna "Descanso"

    Pode ser ?


    .................................................................................
    *** Só sei que nada sei ***
    dteixa
    dteixa
    Avançado
    Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 281
    Registrado : 15/01/2012

    [Resolvido]Escala de Serviço - Página 2 Empty Re: [Resolvido]Escala de Serviço

    Mensagem  dteixa 28/12/2012, 19:36

    isto está complicado Laughing
    Alexandre Neves
    Alexandre Neves
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 8449
    Registrado : 05/11/2009

    [Resolvido]Escala de Serviço - Página 2 Empty Re: [Resolvido]Escala de Serviço

    Mensagem  Alexandre Neves 28/12/2012, 21:32

    Boa noite, Assis
    Penso que pode ser, mas precisa deste trabalho ou é para enriquecimento? É que, compreenderá, o tempo de planear e fazer/refazer o código é à custa de outros trabalhos que vou adiando.


    .................................................................................
    Access 2010. Mande bd que dê para testar (indique a versão). Não peça para fazer o que já tem feito. Dê todos os detalhes.
    Não coloquem entraves como senhas, esconder controlos, etc. Disponibilizem o mais limpo possível
    Só respondo a mensagens privadas, se forem de assunto privado; às outras não respondo.
    Quem trabalha e mata a fome não come o pão de ninguém; mas quem não trabalha e come, come sempre o pão de alguém. António Aleixo
    Assis
    Assis
    Maximo VIP
    Maximo VIP


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 4772
    Registrado : 06/11/2009

    [Resolvido]Escala de Serviço - Página 2 Empty Re: [Resolvido]Escala de Serviço

    Mensagem  Assis 28/12/2012, 22:51

    Boa noite Alexandre

    Não, não tenho pressa. Então quando tiver um tempinho livre agradeço.
    Obrigado
    Boas entradas em 2013.


    .................................................................................
    *** Só sei que nada sei ***
    Alexandre Neves
    Alexandre Neves
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 8449
    Registrado : 05/11/2009

    [Resolvido]Escala de Serviço - Página 2 Empty Re: [Resolvido]Escala de Serviço

    Mensagem  Alexandre Neves 28/12/2012, 23:31

    Assis,
    Penso ser isto:
    Option Compare Database
    Option Explicit
    'código criado por Alexandre Neves
    'em 2012-12-15
    'para dteixa
    'do fórum MaximoAccess

    Sub CriaTurnos()
    On Error Resume Next
    Dim RstOperadores As DAO.Recordset, RstTurnos As DAO.Recordset, RstAusencias As DAO.Recordset
    Dim dtData As Date, Inicio As Date, Fim As Date, Turno As Byte

    Set RstOperadores = CurrentDb.OpenRecordset("SELECT * FROM Operadores;")
    Set RstTurnos = CurrentDb.OpenRecordset("SELECT * FROM Turnos;")
    Set RstAusencias = CurrentDb.OpenRecordset("SELECT Letra,Inicio,Fim FROM Ausencias LEFT JOIN Operadores ON Ausencias.Operador=Operadores.Nome;")
    Inicio = Forms!Rotina!Inicio
    Fim = Forms!Rotina!Fim

    ''''
    CurrentDb.Execute "DELETE * FROM Turnos"
    ''''
    For dtData = Inicio To Fim
    RstTurnos.AddNew
    RstTurnos(1) = dtData

    RstAusencias.MoveFirst
    Do While Not RstAusencias.EOF
    If dtData >= RstAusencias("Inicio") And dtData <= RstAusencias("Fim") Then RstTurnos("Ausencia") = RstTurnos("Ausencia") & RstAusencias("Letra") & ","
    RstAusencias.MoveNext
    Loop
    If Not IsNull(RstTurnos("Ausencia")) Then RstTurnos("Ausencia") = Mid(RstTurnos("Ausencia"), 1, Len(RstTurnos("Ausencia")) - 1)
    For Turno = 1 To Forms!Rotina!NTurnos
    If RstOperadores.EOF Then RstOperadores.MoveFirst
    Verifica1:
    If InStr(1, RstTurnos("Ausencia"), RstOperadores("Letra")) > 0 Then
    If RstOperadores.EOF Then RstOperadores.MoveFirst Else RstOperadores.MoveNext
    GoTo Verifica1
    End If

    RstTurnos(Turno + 1) = RstOperadores("Letra")
    RstOperadores.MoveNext
    If RstOperadores.EOF Then RstOperadores.MoveFirst
    Verifica2:
    If InStr(1, RstTurnos("Ausencia"), RstOperadores("Letra")) > 0 Then
    If RstOperadores.EOF Then RstOperadores.MoveFirst Else RstOperadores.MoveNext
    GoTo Verifica2
    End If

    RstTurnos(Turno + 1) = RstTurnos(Turno + 1) & "," & RstOperadores("Letra")
    RstOperadores.MoveNext
    If RstOperadores.EOF Then RstOperadores.MoveFirst
    Verifica3:
    If InStr(1, RstTurnos("Ausencia"), RstOperadores("Letra")) > 0 Then
    If RstOperadores.EOF Then RstOperadores.MoveFirst Else RstOperadores.MoveNext
    GoTo Verifica3
    End If

    RstTurnos(Turno + 1) = RstTurnos(Turno + 1) & "," & RstOperadores("Letra")
    RstOperadores.MoveNext
    If RstOperadores.EOF Then RstOperadores.MoveFirst
    Verifica4:
    If InStr(1, RstTurnos("Ausencia"), RstOperadores("Letra")) > 0 Then
    If RstOperadores.EOF Then RstOperadores.MoveFirst Else RstOperadores.MoveNext
    GoTo Verifica4
    End If

    RstTurnos(Turno + 1) = RstTurnos(Turno + 1) & "," & RstOperadores("Letra")
    RstOperadores.MoveNext

    Next

    RstTurnos.Update

    Next

    RstTurnos.MoveFirst
    Do While Not RstTurnos.EOF
    RstOperadores.MoveFirst
    RstTurnos.Edit
    Do While Not RstOperadores.EOF

    If InStr(1, RstTurnos(2) & RstTurnos(3) & RstTurnos(4) & RstTurnos("Ausencia"), RstOperadores("Letra")) = 0 Then
    RstTurnos("Descanso") = RstTurnos("Descanso") & RstOperadores("Letra") & ","
    End If

    If RstOperadores.EOF Then RstOperadores.MoveFirst Else RstOperadores.MoveNext
    Loop
    If right(RstTurnos("Descanso"), 1) = "," Then RstTurnos("Descanso") = Mid(RstTurnos("Descanso"), 1, Len(RstTurnos("Descanso")) - 1)
    RstTurnos.Update
    RstTurnos.MoveNext
    Loop
    Set RstTurnos = Nothing: Set RstOperadores = Nothing

    End Sub


    .................................................................................
    Access 2010. Mande bd que dê para testar (indique a versão). Não peça para fazer o que já tem feito. Dê todos os detalhes.
    Não coloquem entraves como senhas, esconder controlos, etc. Disponibilizem o mais limpo possível
    Só respondo a mensagens privadas, se forem de assunto privado; às outras não respondo.
    Quem trabalha e mata a fome não come o pão de ninguém; mas quem não trabalha e come, come sempre o pão de alguém. António Aleixo
    dteixa
    dteixa
    Avançado
    Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 281
    Registrado : 15/01/2012

    [Resolvido]Escala de Serviço - Página 2 Empty Re: [Resolvido]Escala de Serviço

    Mensagem  dteixa 29/12/2012, 00:01

    Grande Alexandre, mesmo sem tempo sempre a ajudar.
    Assis
    Assis
    Maximo VIP
    Maximo VIP


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 4772
    Registrado : 06/11/2009

    [Resolvido]Escala de Serviço - Página 2 Empty Re: [Resolvido]Escala de Serviço

    Mensagem  Assis 29/12/2012, 00:24

    Obrigado Alexandre
    Perfeito
    Tudo de bom para si, agora e sempre.
    Abraço


    .................................................................................
    *** Só sei que nada sei ***
    Alexandre Neves
    Alexandre Neves
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 8449
    Registrado : 05/11/2009

    [Resolvido]Escala de Serviço - Página 2 Empty Re: [Resolvido]Escala de Serviço

    Mensagem  Alexandre Neves 29/12/2012, 08:20

    Ainda bem que resolveram. Marquei Resolvido.
    Abraço também para si.
    Continuação de Santo Natal e Feliz Ano de 2013.


    .................................................................................
    Access 2010. Mande bd que dê para testar (indique a versão). Não peça para fazer o que já tem feito. Dê todos os detalhes.
    Não coloquem entraves como senhas, esconder controlos, etc. Disponibilizem o mais limpo possível
    Só respondo a mensagens privadas, se forem de assunto privado; às outras não respondo.
    Quem trabalha e mata a fome não come o pão de ninguém; mas quem não trabalha e come, come sempre o pão de alguém. António Aleixo
    dteixa
    dteixa
    Avançado
    Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 281
    Registrado : 15/01/2012

    [Resolvido]Escala de Serviço - Página 2 Empty Re: [Resolvido]Escala de Serviço

    Mensagem  dteixa 29/12/2012, 08:36

    Obrigao Alexandre
    Bom ano para ti tambem.
    dteixa
    dteixa
    Avançado
    Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 281
    Registrado : 15/01/2012

    [Resolvido]Escala de Serviço - Página 2 Empty Re: [Resolvido]Escala de Serviço

    Mensagem  dteixa 4/1/2013, 16:09

    Boas
    voltando a questão da logica acho que assim será mais fácil,
    então o código faz a pesquisa a tabela Operadores e a tabela ausências,
    no dia 01, turno da tarde, mete os dois primeiros operadores disponíveis esses mesmos dois operadores devem ir para o tuno da manha no dia 02 e no dia 03 os mesmo dois vão para o turno da noite. depois os dias de folga serão os possíveis em função dos operadores disponíveis
    seguindo esta sequencia é possível?

    01 | 02 | 03
    Turno Tarde- AB
    Tuno Manha - AB
    Turno Noite- AB

    obrigado
    expressoman
    expressoman
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 18
    Registrado : 14/02/2013

    [Resolvido]Escala de Serviço - Página 2 Empty Re: [Resolvido]Escala de Serviço

    Mensagem  expressoman 11/11/2014, 19:49

    Olá Alexandre Neves,

    Após uma pesquisa intensa pelo forum, fui encontrar este código desenvolvido por si no dia 15-12-2012 para o utilizador "dteixa", que se refere a uma escala de serviço anual para alguns trabalhadores (operadores).

    Como não percebo quase nada de programação, tentei adaptar o que conseguia, mas sem sucesso.

    Neste momento, o seu código dá-me quase tudo o que necessito faltando apenas implementar algumas regras lógicas, que não consigo de todo implementar pelo motivo anteriormente descrito.

    Assim, lembrei-me de lhe solicitar, se conseguia me ajudar por forma a ultrapassar um grave problema que tenho no meu trabalho, onde efetuamos trabalho por turnos, 12 horas por turno.

    A regra mais importante que necessito de implementar é, por cada 4 turnos efetuados (48 horas) o trabalhador tem 2 folgas (48 horas), caso na rotação normal não se verifique, o código deve forçar essa folga.

    Junto envio o código para a sua eventual análise.

    Desde Já agradeço atenção dispensada.

    Muito Obrigado!
    ---------------

    Option Compare Database
    Option Explicit
    'código criado por Alexandre Neves
    'em 2012-12-15
    'para dteixa
    'do fórum MaximoAccess

    Sub CriaTurnos()
    Dim RstOperadores As DAO.Recordset, RstTurnos As DAO.Recordset
    Dim dtData As Date, Inicio As Date, Fim As Date, Turno As Byte

    Set RstOperadores = CurrentDb.OpenRecordset("SELECT * FROM Operadores;")
    Set RstTurnos = CurrentDb.OpenRecordset("SELECT * FROM Turnos;")
    Inicio = #1/1/2015#
    Fim = #3/31/2015#

    For dtData = Inicio To Fim
    RstTurnos.AddNew
    RstTurnos(1) = dtData
    For Turno = 1 To 2
    If RstOperadores.EOF Then RstOperadores.MoveFirst
    Verifica1:
    If Not Trabalha(RstOperadores("Nome"), dtData) Then
    If RstOperadores.EOF Then RstOperadores.MoveFirst Else RstOperadores.MoveNext
    GoTo Verifica1
    End If
    RstTurnos(Turno + 1) = RstOperadores("Letra")
    If RstOperadores.EOF Then RstOperadores.MoveFirst Else RstOperadores.MoveNext
    If RstOperadores.EOF Then RstOperadores.MoveFirst
    Verifica2:
    If Not Trabalha(RstOperadores("Nome"), dtData) Then
    If RstOperadores.EOF Then RstOperadores.MoveFirst Else RstOperadores.MoveNext
    GoTo Verifica2
    End If
    RstTurnos(Turno + 1) = RstTurnos(Turno + 1) & "," & RstOperadores("Letra")
    If RstOperadores.EOF Then RstOperadores.MoveFirst Else RstOperadores.MoveNext
    Next
    RstTurnos.Update
    Next

    RstTurnos.MoveFirst
    Do While Not RstTurnos.EOF
    RstOperadores.MoveFirst
    RstTurnos.Edit
    Do While Not RstOperadores.EOF
    If InStr(1, RstTurnos(2) & RstTurnos(3) & RstTurnos(4), RstOperadores("Letra")) = 0 Then
    RstTurnos("Descanso") = RstTurnos("Descanso") & RstOperadores("Letra") & ","
    End If
    RstOperadores.MoveNext
    Loop
    RstTurnos("Descanso") = Mid(RstTurnos("Descanso"), 1, Len(RstTurnos("Descanso")) - 1)
    RstTurnos.Update
    RstTurnos.MoveNext
    Loop
    Set RstTurnos = Nothing: Set RstOperadores = Nothing
    End Sub

    Function Trabalha(Operador As String, dtData As Date) As Boolean
    If DCount("*", "Ausencias", "Operador='" & Operador & "' and #" & Format(dtData, "m-d-yyyy") & "# BETWEEN Inicio and Fim") = 0 Then Trabalha = True
    End Function
    Alexandre Neves
    Alexandre Neves
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 8449
    Registrado : 05/11/2009

    [Resolvido]Escala de Serviço - Página 2 Empty Re: [Resolvido]Escala de Serviço

    Mensagem  Alexandre Neves 11/11/2014, 21:41

    Boa noite,
    Desmarquei o Resolvido, já que a dúvida continua, mesmo não sendo pelo membro que abriu o tema.
    Disponibilize dados para se trabalhar.


    .................................................................................
    Access 2010. Mande bd que dê para testar (indique a versão). Não peça para fazer o que já tem feito. Dê todos os detalhes.
    Não coloquem entraves como senhas, esconder controlos, etc. Disponibilizem o mais limpo possível
    Só respondo a mensagens privadas, se forem de assunto privado; às outras não respondo.
    Quem trabalha e mata a fome não come o pão de ninguém; mas quem não trabalha e come, come sempre o pão de alguém. António Aleixo
    expressoman
    expressoman
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 18
    Registrado : 14/02/2013

    [Resolvido]Escala de Serviço - Página 2 Empty Re: [Resolvido]Escala de Serviço

    Mensagem  expressoman 12/11/2014, 15:37

    Boa tarde,

    O que pretendia seria:

    - Quando existe pessoas de férias, a rotatividade entre funcionários é maior, não garantindo o descanso semanal. Esse descanso é de 48 horas, depois de ser efetuado 40 horas semanais. Como no meu caso cada turno é de 12 horas, só após 4 turnos (48 horas) é que pode ser concedido e esse descanso semanal.

    - Outra situação, era tentar que todos os funcionários fossem escalados sempre, no mínimo com, com 13 turnos, o que corresponde a uma média anual de 160 horas.

    Junto envio a bd para análise, agradecendo a disponibilidade.
    avatar
    wanessaanjos
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Feminino
    Localização : Brasil
    Mensagens : 1
    Registrado : 15/01/2016

    [Resolvido]Escala de Serviço - Página 2 Empty Escala com regras especificas

    Mensagem  wanessaanjos 15/1/2016, 01:38

    Boa noite mestres!

    Estive lendo aqui no forum e vi com voces realmente da para contar!

    Tambem preciso montar um banco de dados com opcao de relatorios para escala de servicos de 56 funcionarios, mas com regrinhas muito especificas.

    Como posso fazer para obter ajuda?

    Desde ja obrigada!
    Cláudio Más
    Cláudio Más
    Developer
    Developer


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 1314
    Registrado : 21/01/2012

    [Resolvido]Escala de Serviço - Página 2 Empty Re: [Resolvido]Escala de Serviço

    Mensagem  Cláudio Más 15/1/2016, 13:45

    Olá,

    Já iniciou o banco de dados?
    Para obter ajuda, é só postar as dúvidas!
    Smile
    Alexandre Neves
    Alexandre Neves
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 8449
    Registrado : 05/11/2009

    [Resolvido]Escala de Serviço - Página 2 Empty Re: [Resolvido]Escala de Serviço

    Mensagem  Alexandre Neves 9/6/2016, 13:48

    Ainda existem interessados na continuidade da dúvida?
    Ou fecha-se o assunto?
    Aguardamos...


    .................................................................................
    Access 2010. Mande bd que dê para testar (indique a versão). Não peça para fazer o que já tem feito. Dê todos os detalhes.
    Não coloquem entraves como senhas, esconder controlos, etc. Disponibilizem o mais limpo possível
    Só respondo a mensagens privadas, se forem de assunto privado; às outras não respondo.
    Quem trabalha e mata a fome não come o pão de ninguém; mas quem não trabalha e come, come sempre o pão de alguém. António Aleixo
    Alexandre Neves
    Alexandre Neves
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 8449
    Registrado : 05/11/2009

    [Resolvido]Escala de Serviço - Página 2 Empty Re: [Resolvido]Escala de Serviço

    Mensagem  Alexandre Neves 25/6/2016, 21:10

    Como não se manifestaram na continuidade da dúvida, dou o tema por encerrado


    .................................................................................
    Access 2010. Mande bd que dê para testar (indique a versão). Não peça para fazer o que já tem feito. Dê todos os detalhes.
    Não coloquem entraves como senhas, esconder controlos, etc. Disponibilizem o mais limpo possível
    Só respondo a mensagens privadas, se forem de assunto privado; às outras não respondo.
    Quem trabalha e mata a fome não come o pão de ninguém; mas quem não trabalha e come, come sempre o pão de alguém. António Aleixo

    Conteúdo patrocinado


    [Resolvido]Escala de Serviço - Página 2 Empty Re: [Resolvido]Escala de Serviço

    Mensagem  Conteúdo patrocinado


      Data/hora atual: 29/4/2024, 16:38