Eu tenho a seguinte expressão em uma coluna na tabela:
IF(estoque-(venda_media_diaria*prazo_entrega) <= '0',IF(existe_pedido_compra = 'S',IF(Date(pedido_data + prazo_entrega,'DD/MM/YYYY') > Date(Today() + estoque / venda_media_diaria,'DD/MM/YYYY'),'S','N'),'S'),'N')
Essa expressão retorna 'S' quando um determinado produto vai ficar com estoque "0" em um futuro próximo.
Estou tentando contar quantos produtos estão retornando 'S' coma seguinte expressão:
Count("IF(estoque-(venda_media_diaria*prazo_entrega) <= '0',IF(existe_pedido_compra = 'S',IF(Date(pedido_data + prazo_entrega,'DD/MM/YYYY') > Date(Today() + estoque / venda_media_diaria,'DD/MM/YYYY'),'S','N'),'S'),'N')" = 'S',codigo_produto)
mas não está dando certo.
Alguém sabe me dizer o que está errado?
Consegui o resultado esperado criando esse meu IF no Script conforme a sua recomendação e fazendo uma adaptação no pedido. Segue o Script:
If(estoque-(venda_media_diaria*forn_pzentrega) <= 0,If (qtde_pedido > '0',If(Date(pedido_data + prazo_entrega,'DD/MM/YYYY') > Date(Today() + estoque / venda_media_diaria),'DD/MM/YYYY'),'S','N'),'S'),'N') AS ruptura_futura
Com esse IF no Script, fiz o Count(ruptura_futura={"S"})
Boa tarde,
pode ser que assim funcione (Provavelmente não);
Count({<"IF(estoque-(venda_media_diaria*prazo_entrega) <= '0',IF(existe_pedido_compra = 'S',IF(Date(pedido_data + prazo_entrega,'DD/MM/YYYY') > Date(Today() + estoque / venda_media_diaria,'DD/MM/YYYY'),'S','N'),'S'),'N')" = {'S'}>}codigo_produto)
Oque eu sugiro é criar um campo no script com esse seu if e depois usa-lo em um count.
Não deu certo!
Pensei em fazer o IF no Script, mas é porque essas informações vem de tabelas diferentes, aí seria um pouco mais complexo.
Está dando algum erro, ou somente não está trazendo a informação correta que você necessita?
Tenta usar o código abaixo...
=Count({<IF(estoque-(venda_media_diaria*prazo_entrega) <= 0,IF(existe_pedido_compra = 'S',IF(Date(pedido_data + prazo_entrega,'DD/MM/YYYY') > Date(Today() + estoque / venda_media_diaria,'DD/MM/YYYY'),'S','N'),'S'),'N') = 'S'>} codigo_produto)
Não deu certo!
Não está dando erro. Ele apenas está trazendo o resultado errado. Na realidade, ele está contando "codigo_produto" sem levar em consideração a expressão, ou seja, todos os produtos. Mesmo que eu coloque = 'S' ou = 'N', sempre me retorna a quantidade total de produtos.
ok... acredito que neste formato funcione, pode ser que tenha algum erro de expressão, mas a idéia é essa... Você faz um if com seus 'false' e 'true' e no final se eles forem igual a 'S', você coloca como true o count(codigo_produto)... segue expressão...
if(IF(estoque-(venda_media_diaria*prazo_entrega) <= 0,
IF(existe_pedido_compra = 'S',
IF(Date(pedido_data + prazo_entrega,'DD/MM/YYYY') > Date(Today() + estoque / venda_media_diaria,'DD/MM/YYYY'),'S','N')
,'S')
,'N') = 'S', count(codigo_produto))
Não deu certo!
Quando faço:
if(IF(estoque-(venda_media_diaria*prazo_entrega) <= 0,
IF(existe_pedido_compra = 'S',
IF(Date(pedido_data + prazo_entrega,'DD/MM/YYYY') > Date(Today() + estoque / venda_media_diaria,'DD/MM/YYYY'),'S','N')
,'S')
,'N') = 'S', count(codigo_produto))
^
RETORNA "0"
Quando faço:
if(IF(estoque-(venda_media_diaria*prazo_entrega) <= 0,
IF(existe_pedido_compra = 'S',
IF(Date(pedido_data + prazo_entrega,'DD/MM/YYYY') > Date(Today() + estoque / venda_media_diaria,'DD/MM/YYYY'),'S','N')
,'S')
,'N') = 'N', count(codigo_produto))
^
RETORNA o total de produtos existente em meu cadastro.
Poderia postar seu .qvw ou qvf para podermos analisar?
Consegui o resultado esperado criando esse meu IF no Script conforme a sua recomendação e fazendo uma adaptação no pedido. Segue o Script:
If(estoque-(venda_media_diaria*forn_pzentrega) <= 0,If (qtde_pedido > '0',If(Date(pedido_data + prazo_entrega,'DD/MM/YYYY') > Date(Today() + estoque / venda_media_diaria),'DD/MM/YYYY'),'S','N'),'S'),'N') AS ruptura_futura
Com esse IF no Script, fiz o Count(ruptura_futura={"S"})