Versão atual:

Filtro com Datas relatório FWMSExcel

Bom dia 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.

 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

Versões (2):

Ver a versão formatada

Filtro com Datas relatório FWMSExcel

  • criado 19 de Jan de 2023

Comentário

new question