Unlock a world of possibilities! Login now and discover the exclusive benefits awaiting you.
Pessoal tenho essa informação aqui
precisava gerar um script que no Qlikview criasse essa sequencia maluca com diretrizes: equipes: A,B,C e D, Dia de semana Segunda a Sexta + Dia do Mês e os periodos ao lado
que são 07x15, 15x23, 23x07
Onde a regra é a cada 6 dias folga 2 dias
Alguem pdoe me dar uma luz por odne começar?
Olá Thiago, fiz um script que aparentemente resolve o seu problema.
LET vDataIni = Date('01/01/2013'); //Data incial do calendario
LET vDataFim = Date('24/01/2013');//Date(Today()); //Data final do calendario
SET vDias = 2; // Numero para alterar a escala
LET vTotalDias = Num(vDataFim)-Num(vDataIni)+1;
//Criado uma tabela auxiliar com as combinações das 4 equipes
OrdensEquipes:
LOAD * INLINE [
Escalas, Ordem1, Ordem2, Ordem3, Ordem4, Ordem5, Ordem6, Ordem7, Ordem8, Ordem9, Ordem10, Ordem11, Ordem12
07x15, D, D, D, C, C, C, B, B, B, A, A, A
15x23, C, C, B, B, B, A, A, A, D, D, D, C
23x07, B, A, A, A, D, D, D, C, C, C, B, B
FOLGA, A, B, C, D, A, B, C, D, A, B, C, D
];
LET vNumeroOrdens = 12; // Número de combinações
SET vIniDiasEscala = 1;
LET vCampoOrdem = 'Ordem'&$(vIniDiasEscala);
FOR D=1 to $(vTotalDias)
TRACE ($(D)-1);
LET vDataCalendario = Date(Num(vDataIni)+($(D)-1));
Escala:
LOAD
'$(vDataCalendario)' AS DataCal,
Year('$(vDataCalendario)') AS Ano,
Month('$(vDataCalendario)') AS Mês,
Day('$(vDataCalendario)') AS Dia,
WeekDay('$(vDataCalendario)') AS DiaSemana,
$(vCampoOrdem) AS Equipe,
Escalas AS Escala
Resident OrdensEquipes;
If (Mod(($(D)),$(vDias)) = 0) Then
LET vIniDiasEscala = $(vIniDiasEscala) + 1;
If($(vIniDiasEscala)>$(vNumeroOrdens)) Then
LET vIniDiasEscala = 1;
ENDIF
LET vCampoOrdem = 'Ordem'&$(vIniDiasEscala);
ENDIF
NEXT D
DROP Table OrdensEquipes;
Olha o resultado abaixo.
Espero que realmente ajude.
Abraços.
Tonial.
Poderia explicar melhor sua necessidade?
Bom dia Yuri
Funciona assim:
Temos a Equipes aqui : A, b, c e D
Eles querem gerar essa grafico dinamico da escala das Equipes Dia, mes e Ano das equipes, usando a regra que a cada 6 dias a equipe ganha dois dias de folga, nao existe questão de feriado nem nada e tem os periodos, no cado sempre trabalha 3 equipes em um dia por que uma esta folgando exemplo
Segunda: 07x15 - Equipe D - 15x19 - Equipe C - 23x07 - Equipe B - Equipe A De Folga
Terça: 07x15 - Equipe D - 15x19 - Equipe C - 23x07 - Equipe B - Equipe A De Folga
Quarta: 07x15 - Equipe D - 15x19 - Equipe C - 23x07 - Equipe A - Equipe B Folga
Quinta: 07x15 - Equipe D - 15x19 - Equipe C 23x07 - Equipe A - Equipe B Folga
Sexta: 07x15 - Equipe D - 15x19 - Equipe B 23x07 - Equipe A - Equipe C Folga
Sabado 07x15 - Equipe D 15x19 - Equipe B 23x07 - Equipe A - Equipe C Folga
Domingo 07x15 - Equipe C 15x19 - Equipe B 23x07 - Equipe A - Equipe D Folga
e Sempre alternando o periodo Quem estava na semana 07x15 na proxima irá para 23x07 , quem estiver na 23x07 , na proxima irá para 15x23 quem estiver na 15x23, na proxima semana irá para 07x15
Entendi a bomba!
O que seriam os: 07x15, 23x07 e 15x23?
Seria os periodos do Dia (horas)
Rapaz, como fazer tudo automaticamete via QlikView não consegui até o momento, porém, consegui fazer excel. Caso te adiante, segue o arquivo em anexo.
Criei os primeiros 24 dias manualmente e o resto foi só Ctrl+C Ctrl+V
Bom Dia Rodolfo,
Você fez manual não é, se fosse por macro salvaria minha vida é que eles podem mudar de ideia até o final do projeto.
Olá Thiago, fiz um script que aparentemente resolve o seu problema.
LET vDataIni = Date('01/01/2013'); //Data incial do calendario
LET vDataFim = Date('24/01/2013');//Date(Today()); //Data final do calendario
SET vDias = 2; // Numero para alterar a escala
LET vTotalDias = Num(vDataFim)-Num(vDataIni)+1;
//Criado uma tabela auxiliar com as combinações das 4 equipes
OrdensEquipes:
LOAD * INLINE [
Escalas, Ordem1, Ordem2, Ordem3, Ordem4, Ordem5, Ordem6, Ordem7, Ordem8, Ordem9, Ordem10, Ordem11, Ordem12
07x15, D, D, D, C, C, C, B, B, B, A, A, A
15x23, C, C, B, B, B, A, A, A, D, D, D, C
23x07, B, A, A, A, D, D, D, C, C, C, B, B
FOLGA, A, B, C, D, A, B, C, D, A, B, C, D
];
LET vNumeroOrdens = 12; // Número de combinações
SET vIniDiasEscala = 1;
LET vCampoOrdem = 'Ordem'&$(vIniDiasEscala);
FOR D=1 to $(vTotalDias)
TRACE ($(D)-1);
LET vDataCalendario = Date(Num(vDataIni)+($(D)-1));
Escala:
LOAD
'$(vDataCalendario)' AS DataCal,
Year('$(vDataCalendario)') AS Ano,
Month('$(vDataCalendario)') AS Mês,
Day('$(vDataCalendario)') AS Dia,
WeekDay('$(vDataCalendario)') AS DiaSemana,
$(vCampoOrdem) AS Equipe,
Escalas AS Escala
Resident OrdensEquipes;
If (Mod(($(D)),$(vDias)) = 0) Then
LET vIniDiasEscala = $(vIniDiasEscala) + 1;
If($(vIniDiasEscala)>$(vNumeroOrdens)) Then
LET vIniDiasEscala = 1;
ENDIF
LET vCampoOrdem = 'Ordem'&$(vIniDiasEscala);
ENDIF
NEXT D
DROP Table OrdensEquipes;
Olha o resultado abaixo.
Espero que realmente ajude.
Abraços.
Tonial.
Muito Obrigado Fernando
resolveu
Esse é o cara !!