Tipos de dados e campos

Como criar filtros mais complexos para consultar dados das entidades usando a classe Filter do Telescope?

ADSRT.FAQ-2738
Para montar queries com filtros devem ser montados conforme regras específicas, deve utilizar a classe Filter. Veja o exemplo a seguir:

EntPedidos pedido = new EntPedidos(ctx);
EntPessoas cliente = pedido.joinCliente();

// Define o filtro para a entidade pedido
br.com.telescope.sql.Filter filtro = new br.com.telescope.sql.Filter();

// Se tem percentual no parâmetro, define a query com a claúsula LIKE, senão com EQUAL ( = )
if ([parametro].indexOf("%") >= 0) {
    filtro.like(cliente.getNome(), [parametro]);
} else {
    filtro.equal(cliente.getNome(), [parametro]);
}

// Se precisa incluir uma restrição com OR, criar os filtros específicos e usa o método "filtro.or( ... )"
br.com.telescope.sql.Filter filtroData = new br.com.telescope.sql.Filter();
filtroData.equal(texto.getDataEntrega(), [hoje]);

br.com.telescope.sql.Filter filtroNull = new br.com.telescope.sql.Filter();
filtroNull.isNull(texto.getDataEntrega());

filtro.or(filtroNull, filtroData...);
       
pedido.filterBy(filtro);
pedido.findAll();

while (pedido.next()) {
    System.out.println("Pedido: " + pedido.valueOfNumero());
    System.out.println("Fornecedor: " + fornecedor.valueOfNome());
    System.out.println("Cliente: " + cliente.valueOfNome());
    System.out.println("Cidade (do cliente): " + cidade.valueOfNome());
}


// --> exemplo de filtro usando a cláusula ".in(...)"
/**
   neste exemplo foi utilizado um array de objetos....
   ....
               docpess.filterBy()
                       .in(docpess.getTipoDocumentoId(), new Object[] {888 ,999})
                       .equal(docpess.getDocumento(), valorDoc)