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
compartilhar
  1. Você vai ver essas setas em qualquer página de pergunta. Com elas, você pode dizer se uma pergunta ou uma resposta foram relevantes ou não.
  2. Edite sua pergunta ou resposta caso queira alterar ou adicionar detalhes.
  3. Caso haja alguma dúvida sobre a pergunta, adicione um comentário. O espaço de respostas deve ser utilizado apenas para responder a pergunta.
  4. Se o autor da pergunta marcar uma resposta como solucionada, esta marca aparecerá.
  5. Clique aqui para mais detalhes sobre o funcionamento do TOTVS DevForum!

1 resposta

Não é a resposta que estava procurando? Procure outras perguntas com as tags sql ou faça a sua própria pergunta.