Consulta SQL - FWMsExcel

Ola pessoal, tudo bom?

Estou desenvolvendo um relatorio com a classe FWMsExcel, nele preciso ao não selecionar nenhuma das 5 opções do parametro no Where ele traga todos os registros, porém quando insiro essas 5 opções na consulta ele traz apenas os registros que possuem o C6_NUMOP e C6_ITEMOP preenchido porém também preciso que os campos que estão vazios apareçam caso nenhum parametro seja atendido, poderiam me ajudar?


    SELECT DISTINCT        
     C6_NUM,         
     C6_ITEM,         
     C6_PRODUTO,         
     C6_DESCRI,         
     C6_QTDVEN,         
     C6_PRCVEN,         
     C6_VALOR,         
     C6_ZZGRUPO,         
     C6_ZZDSCG,         
     C6_LOCAL,         
     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        
     FROM SC6010 SC6        
     INNER JOIN SC5010 SC5 ON         
     C5_FILIAL = C6_FILIAL         
     AND C5_NUM = C6_NUM         
     AND SC5.D_E_L_E_T_ = ' '         
     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_ = ' '         
     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 SH6010 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         
    WHERE         
    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 = ' '         
    AND C6_LOCAL IN ('01','03','05','06','07')         
    AND SC6.D_E_L_E_T_ = ' '
    //**Quando este filtro e inserido mesmo nao selecionando nenhuma das opções so traz os registros que possuem o C6_NUMOP e C6_ITEMOP preenchido e neste caso precisaria que trouxesse todos os registros.**
    If nOpcFiltr == 5
        AND H6_RECURSO = '000058'   
    Else
    //Extrai os registros baseado pelos campos C6_ENTREG,C6_ZZDT1,C6_ZZDT2 e C6_ZZDT3.
          AND ((C6_ENTREG BETWEEN'+DtoS(MV_PAR01)+'AND '+DtoS(MV_PAR02)+')  OR  
        (C6_ZZDT1 BETWEEN'+DtoS(MV_PAR01)+' AND '+DtoS(MV_PAR02)+')  OR  
        (C6_ZZDT2 BETWEEN'+DtoS(MV_PAR01)+' AND '+DtoS(MV_PAR02)+')  OR  
        (C6_ZZDT3 BETWEEN'+DtoS(MV_PAR01)+' AND '+DtoS(MV_PAR02)+')) 
        AND  H6_RECURSO <> '000058'   
        If nOpcFiltr == 1
            //**Produção sem Atraso**
            //Verifica se a data de entrega prevista pelo Ccomerial e menor que a data atual.
            //Valida se houve reprogramação pela produção pelos campos C6_ZZDT1,C6_ZZDT2 e C6_ZZDT3
            //E verifica se a matéria prima está disponível ou não.
            AND C6_ENTREG >= GETDATE() 
            AND C6_ZZDT1 = ' ' 
            AND C6_ZZDT2 = ' ' 
            AND C6_ZZDT3 = ' ' 
            AND C6_ZZMAT = 'S'  
            AND H6_RECURSO <> '000058'   
        ElseIf nOpcFiltr == 2
            //Verifica se a data de entrega prevista pelo Ccomerial e menor que a data atual.
            //Valida se houve reprogramação pela produção pelos campos C6_ZZDT1,C6_ZZDT2 e C6_ZZDT3 e se a mesma menor que a data atual.
            //E verifica se a matéria prima está disponível ou não.
            AND ((C6_ENTREG <=  GETDATE()   )  
            AND (C6_ZZDT1   <=  GETDATE()   ) 
            AND (C6_ZZDT2   <=  GETDATE()   ) 
            AND (C6_ZZDT3   <=   GETDATE()  ))  
            AND C6_ZZMAT = 'S'  
            AND H6_RECURSO <> '000058'   
        ElseIf nOpcFiltr == 3
            //Verifica se as datas de reprogramação são maiores que a data atual e materia prima está como Sim.
            AND ((C6_ZZDT1 > GETDATE() )   
            OR (C6_ZZDT2   > GETDATE() )  
            OR (C6_ZZDT3   > GETDATE() )) 
            AND C6_ZZMAT = 'S'  
            AND H6_RECURSO <> '000058'   
        ElseIf nOpcFiltr == 4
            //Verifica se a materia prima está como Não
            AND C6_ZZMAT = 'N'   
            AND H6_RECURSO <> '000058'   
        EndIf
    EndIf
    GROUP BY 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_RECURSO,C6_LOCAL