Skip to main content
cancel
Showing results for 
Search instead for 
Did you mean: 
rodrigo_rocha
Creator
Creator

Como buscar quantidade de dias dos meses anteriores II - A Revanche!!

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:

Screenshot_11.png

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

1 Solution

Accepted Solutions
srchagas
Creator III
Creator III

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

Data Formatada.PNG

Variaveis Data Formatada.PNG

=NetWorkDays('2017-01-01','2017-03-31')

Resultado Networkdays.PNG

View solution in original post

17 Replies
srchagas
Creator III
Creator III

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

rodrigo_rocha
Creator
Creator
Author

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?


Screenshot_12.png

Desde já agradeço!

Rodrigo Ramos Rocha

rodrigo_rocha
Creator
Creator
Author

UP PLEASE!!!

MarcoARaymundo
Creator III
Creator III

Bom dia!

Se eu entendi, deve ser algo assim que você quer.

QtdeDias.png


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!

srchagas
Creator III
Creator III

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.

rodrigo_rocha
Creator
Creator
Author

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!

srchagas
Creator III
Creator III

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)

NetWorkDays.PNG

rodrigo_rocha
Creator
Creator
Author

Thiago...

Me desculpe pela encheção de saco cara... Mas verificando aqui eu entendi que 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!!

srchagas
Creator III
Creator III

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)