Unlock a world of possibilities! Login now and discover the exclusive benefits awaiting you.
Olá pessoal!!
A primeira parte dessa saga aconteceu aqui: Como buscar quantidade de dos meses anteriores!!
E como disse para o amigo Marcel, minha duvida foi parcialmente resolvida pois agora tenho um outro problema. A quantidade de dias que a expressão retorna é apenas a dos dias que o produto foi vendido, ou seja, se um produto foi vendido apenas hoje, essa quantidade de dias que aparece apenas para o mesmo é de 1 dia e não 30 dias do mês. Veja o exemplo abaixo:
No registro destacado em azul, como este produto foi vendido em todos os dias uteis do mês, ele apresenta 24 dias. Porém o registro destacado em vermelho que consta 23 dias, o produto não foi vendido em todos os dias uteis, sendo que em 1 dia o mesmo não teve venda.
Existe alguma função de calendário para que possa resolver este problema? Preciso que a mesma quantidade de dias seja contado em todos os registros mesmo que eles tenham sido vendidos em apenas 1 dia do mês. Lembro que também é preciso que esses dias sejam somados a medida que o usuário escolha mais de um mês na caixa de dados na parte superior da tela.
Desde já agradeço!!
Rodrigo Ramos Rocha
Tentou com e se floor
Coloca em objeto de texto e verifica como esta retornando a variavel
veja o exemplo que eu fiz.... pode se que ta dando merda na hora de voce passa a data deve ta indo numero e networkdays nao funciona
=NetWorkDays('2017-01-01','2017-03-31')
Bom Dia Amigo
Duas opcoes para ti :
1 - NetWorkDays('01/10/2017','31/10/2017'), passe por duas variaveis a data inicial e final do messes
2 - Criar na master calendar os duas itens do Mes corrido: Master Calendar with Working days & Holidays Flag
Obrigado pela ajuda Thiago!!!
Porém não funcionou... ou não utilizei da maneira correta. O primeiro comando da o resultado da contagem 1 dia, mesmo colocando 2 meses ou mais. Já o segundo não adiantaria pois ele utiliza o campo data da minha aplicação e essa data possui o problema que eu descrevi acima.
Sera que estou utilizando da maneira correta?
Desde já agradeço!
Rodrigo Ramos Rocha
UP PLEASE!!!
Bom dia!
Se eu entendi, deve ser algo assim que você quer.
Pelo campo DataCompra identifico o mês anterior e gero um campo chave (pk_mesref) com a tabela que tem a qtde de dias por mês (QtDiasMes).
Tenta adaptar ao seu script.
QtDiaMes:
LOAD * INLINE [
pk_mesref,QtdDias
N1,31
N2,28
B2,29
N3,31
N4,30
N5,31
N6,30
N7,31
N8,31
N9,30
N10,31
N11,30
N12,31
];
FATO:
LOAD
DataCompra,
AddMonths(DataCompra, -1) as MesAnt,
If((Mod(Year(AddMonths(DataCompra, -1)),400)=0 or (Mod(Year(AddMonths(DataCompra, -1)),4)=0 and Mod(Year(AddMonths(DataCompra, -1)),100) > 0)) and Num(Month(AddMonths(DataCompra, -1))) = 2 ,
'B',
'N'
) & Num(Month(AddMonths(DataCompra, -1))) as pk_mesref,
Valor
;
LOAD * INLINE [
DataCompra,Valor
10/02/2012,150
05/01/2017,333
15/03/2017,231
24/05/2017,652
];
Abraços!
Como voce usou o networkDays?
voce pode usar como uma expressao passando a data inicial e a final, ele vai ignorar tudo e vai fazer o network days.
Note que eu usei o MonthStart e Month End
Assim pego a data inicial e final do mes independente da data selecionada.
Segue um exmeplo pra voce se guiar.
Valeu Thiago... mas teria como vc me passar o codigo que esta no qvw em outro formato? Não consigo abrir arquivos feitos de outro usuario aqui no meu serviço... Não tenho permissão... Pode ser em txt mesmo
Obrigado!
Beleza
Segue o exemplo
teras algo semelhante a isso aqui :
Texte Object 1:
= 'Data Inicial: ' & vDataInicioMes
vDataInicioMes = =MonthStart(Today())
text Object 2:
= 'Data Final: ' & vDataFimMes
vDataFimMes = =MonthEnd(Today())
Text Object 3:
= 'NetWorkdays do mes: ' & NetWorkDays(vDataInicioMes,vDataFimMes)
Thiago...
Me desculpe pela encheção de saco cara... Mas verificando aqui eu entendi que só vai funcionar com o mês corrente. Ira funcionar se o usuário escolher esse mês e o mês passado totalizando 30 dias? (Novembro 5 dias; Outubro 25 dias)
Obrigado!!
Funciona Sim e so voce mudar para o "MaxData"
imagina assim, tu tens uma dimensao de data certo ? um campo chamado "Data" formado em DD/MM/YYYY
faca um Max dele seria assim:
1 - Criar uma variavel com max data, exemplo:
vMaxDataCorrente = =Max(Data)
2- Fazer a Data Inicial do Mes:
vMaxInicioMes = =MonthStart(vMaxDataCorrente)
vMaxFimMes = MonthEnd(vMaxDataCorrente)
vDiasUteisMes = NetworkDays(vMaxInicioMes ,vMaxFimMes)