PERGUNTAS E RESPOSTAS
 
Bem Vindo, Visitante  Todos os Fórums
  Configurador/IDE
Enviar para a impressoraImprimir  Enviar e-mail para um amigoEnviar Para um Amigo
Precisa estar Logado

Subject Assunto:
Filtro com Datas relatório FWMSExcel
Versão:
12.1.27
Plataforma:
.
Complemento:
DB:
.
Complemento:
LinkedIn
Foto
Mensagem do Enviar e-mail Abrir o Perfil do usuário KAOLOX KAOLOX em 19/01/2023, 16:27 h
Local: SP  Registro: 14/06/2022  Postagens: 2
Boa tarde pessoal, tudo bom? estou desenvolvendo um relatório com a classe FWMSExcel. Tenho um parâmetro com 3 opções a opção 1 está extraindo normalmente os valores, a opção 3 também está extraindo porém a opção 2 não extrai os valores corretos, onde o ideal e que ele extraia somente os registros com datas maiores do que a informada no parâmetro MV_PAR01 e MV_PAR02, e ele está extraindo datas menores do que as informadas nos parâmetros acima.

Ja tentei de varias formas até fazer a mesma lógica da opção 1 alterando somente os operadores lógicos porém não extrai nenhum registro.

Segue query:

SELECT       
      C6_NUM,       
      C6_ITEM,       
      C6_PRODUTO,       
      C6_DESCRI,       
      C6_QTDVEN,       
      C6_PRCVEN,       
      C6_VALOR,       
      C6_ZZGRUPO,       
      C6_ZZDSCG,       
      C5_CLIENTE,       
      A1_NOME,       
      A1_LOJA,       
      C5_EMISSAO,       
      C6_ZZMAT,       
      C6_ENTREG,       
      C6_ZZPRZ,       
      C6_ZZDT1,       
      C6_ZZDT2,       
      C6_ZZDT3,       
      C6_ZZOBSV,       
      C5_ZZLIBEN,       
      C5_ZZUENG,       
      C6_CF,       
      C2_NUM,       
      C2_ITEM,       
      H6_OPERAC,       
      H1_DESCRI,       
      H6_QTDPROD,       
      H6_DTAPONT       
      FROM SC6010 SC6       
      LEFT JOIN SC2010 SC2       
      ON C6_FILIAL = C2_FILIAL       
      AND C6_PRODUTO = C2_PRODUTO       
      AND C6_NUMOP = C2_NUM       
      AND C6_ITEMOP = C2_ITEM       
      AND SC2.D_E_L_E_T_ = ‘ ‘       
      AND C6_OP <> ‘‘       
      INNER JOIN SC5010 SC5 ON       
      C5_FILIAL = C6_FILIAL       
      AND C5_NUM = C6_NUM       
      AND SC5.D_E_L_E_T_ = ‘ ‘       
      LEFT JOIN SA1010 SA1 ON       
      C5_CLIENTE = A1_COD       
      AND C5_LOJACLI = A1_LOJA       
      AND C5_TIPO = ‘N‘       
      AND SC5.D_E_L_E_T_ = ‘ ‘       
      AND SA1.D_E_L_E_T_ = ‘ ‘       
     LEFT JOIN SA2010 SA2 ON       
      C5_CLIENTE = A2_COD       
      AND C5_LOJACLI = A2_LOJA       
      AND C5_TIPO <> ‘N‘       
      AND SC5.D_E_L_E_T_ = ‘ ‘       
      AND SA2.D_E_L_E_T_ = ‘ ‘       
     LEFT JOIN                     
     (SELECT H6_FILIAL,H6_DTAPONT, MAX (H6_OPERAC)H6_OPERAC, H6_OP, H6_PRODUTO, H6_RECURSO, SUM(H6_QTDPROD)H6_QTDPROD +CRLF
     FROM SH6010 SH6A          
     WHERE SH6A.D_E_L_E_T_ = ‘ ‘
     AND SH6A.H6_OPERAC IN      
     (SELECT MAX(SH6B.H6_OPERAC) H6_OPERAC      
     FROM SH6010 SH6B       
     WHERE SH6B.D_E_L_E_T_ = ‘ ‘
     AND SH6B.H6_OP = SH6A.H6_OP
     GROUP BY SH6B.H6_FILIAL, SH6B.H6_OP      
    )GROUP BY H6_FILIAL,H6_OPERAC, H6_OP, H6_PRODUTO, H6_RECURSO,H6_DATAINI,H6_DTAPONT     
    ) SH6 ON
      SH6.H6_FILIAL = C6_FILIAL       
      AND SH6.H6_PRODUTO = C6_PRODUTO
      AND SUBSTRING(SH6.H6_OP, 1, 6) = C6_NUMOP       
      AND SUBSTRING(SH6.H6_OP, 7, 2) = C6_ITEMOP       
     LEFT JOIN SH1010 SH1 ON       
      H1_FILIAL = SH6.H6_FILIAL       
      AND H1_CODIGO = SH6.H6_RECURSO       
      AND SH1.D_E_L_E_T_ = ‘ ‘       
     WHERE       
     SC6.D_E_L_E_T_ = ‘ ‘       
    If !Empty(MV_PAR03)
        AND C5_NUM = ‘+MV_PAR03+‘
    EndIf
        //Parametro correto
    If nOpcFiltr == 1
     AND (
          (      C6_ENTREG <= ‘+DtoS(MV_PAR01)+‘ OR C6_ENTREG <= ‘+DtoS(MV_PAR02)+‘ )
          AND ( C6_ZZDT1 <= ‘+DtoS(MV_PAR01)+‘ OR C6_ZZDT1 <= ‘+DtoS(MV_PAR02)+‘ )
          AND ( C6_ZZDT2 <= ‘+DtoS(MV_PAR01)+‘ OR C6_ZZDT2 <= ‘+DtoS(MV_PAR02)+‘ )
          AND ( C6_ZZDT3 <= ‘+DtoS(MV_PAR01)+‘ OR C6_ZZDT3 <= ‘+DtoS(MV_PAR02)+‘ )
     )
     AND C6_ZZMAT = ‘S‘
        //Parametro que extrai os valores incorretos
        //Todos os campos são do tipo data exceto o C6_ZZMAT
    ElseIf nOpcFiltr == 2
     AND (
        (       C6_ENTREG >= ‘+DtoS(MV_PAR01)+‘ OR C6_ENTREG>=‘+DtoS(MV_PAR02)+‘
        AND C6_ZZPRZ >= ‘+DtoS(MV_PAR01)+‘ OR C6_ZZPRZ >= ‘+DtoS(MV_PAR02)+‘   
        AND C6_ZZDT1 >= ‘+DtoS(MV_PAR01)+‘ OR C6_ZZDT1 >= ‘+DtoS(MV_PAR02)+‘   
        AND C6_ZZDT2 >= ‘+DtoS(MV_PAR01)+‘ OR C6_ZZDT2 >= ‘+DtoS(MV_PAR02)+‘   
        AND C6_ZZDT3 >= ‘+DtoS(MV_PAR01)+‘ OR C6_ZZDT3 >= ‘+DtoS(MV_PAR02)+‘ )
     )
     AND C6_ZZMAT = ‘S‘
        //Parametro correto
    ElseIf nOpcFiltr == 3
        AND C6_ZZMAT = ‘N‘   
    EndIf
     AND C6_CF IN (‘6101‘,‘5101‘,‘6102‘,‘5102‘,‘6107‘,‘6117‘,‘5117‘,‘5933‘,‘6933‘,‘5124‘,‘6108‘,‘6118‘,‘5401‘,‘6404‘,‘7101‘,‘5551‘,‘6551‘,‘6109‘,‘6401‘)       
     AND C5_TIPO = ‘N‘       
     AND C6_NOTA = ‘ ‘       
     AND C6_BLQ = ‘ ‘       
     ORDER BY C6_NUM+C6_ITEM


Mensagem do Enviar e-mail Abrir o Perfil do usuário ROBERTOMEN ROBERTOMEN em 07/06/2023, 12:31 h
Local: PR  Registro: 04/07/2017  Postagens: 442
tente:
ElseIf nOpcFiltr == 2

AND (
        ( C6_ENTREG >= '+DtoS(MV_PAR01)+' OR C6_ENTREG>='+DtoS(MV_PAR02)+')
        AND ( C6_ZZPRZ >= '+DtoS(MV_PAR01)+' OR C6_ZZPRZ >= '+DtoS(MV_PAR02)+' )
        AND ( C6_ZZDT1 >= '+DtoS(MV_PAR01)+' OR C6_ZZDT1 >= '+DtoS(MV_PAR02)+' )
        AND ( C6_ZZDT2 >= '+DtoS(MV_PAR01)+' OR C6_ZZDT2 >= '+DtoS(MV_PAR02)+' )
        AND ( C6_ZZDT3 >= '+DtoS(MV_PAR01)+' OR C6_ZZDT3 >= '+DtoS(MV_PAR02)+' )
     )

     AND C6_ZZMAT = 'S'

Para postar no Fórum você precisa efetuar o seu login ou se registrar

 Mudar para Fórum

 

 

 
 
   
Pagina Principal Shopping PROTHEUS Tire suas duvidas Vagas Microsiga em todo Brasil Aprofunde seus conhecimentos Noticias Online Fale Conosco Pagina Principal