ZOOM não filtra resultados

Prezados,

O filtro no zoom apenas funciona em datasets sincronizados?

Tenho um dataset que recebe um WHERE = X, com isso não consigo sincronizar.

Existe alguma forma de possuir dataset que possui constraint e consegue filtrar os resultados no zoom?

Zoom estrutura:

_mat = '1313' reloadZoomFilterValues('Cc', 'MATRICULA,' + _mat)

Dataset::

if (constraints != null) { for (var i = 0; i < constraints.length; i++) { if (constraints[i].fieldName == "MATRICULA") { C_MATRICULA = constraints[i].initialValue; } } }

var myQuery = "SELECT CC FROM CENTRO_CUSTO("+C_MATRICULA+", 1, 0, 0)) ORDER BY DESCRI";

Quando executo o zoom, ele carrega os dados corretamente, porém quando vou usar o filtro não funciona.

Ex:

DADOS RETORNADOS:

1 - Unidade São Paulo

2 - Financeiro

3 - Matriz

Quando uso o zoom: ele carrega os três resultados, porém quando vou digitar no zoom a palavra: "Matriz" --> retorna os três resultados;

Se o dataset for sincronizado eu consigo efetuar o filtro no zoom em real time.

Já deu uma olhada nessa documentação ?Desenvolvimento de Datasets - TOTVS Fluig - TDN

Não funciona no caso de um dataset customizadO. Eu preciso usar o filtro no zoom em real time…

@Luís,

Tem um exemplo aqui de como tratar os filtros do dataset customizado:

https://forum.totvs.io/t/como-colocar-parametros-no-dataset-customizado/11081


UPDATE

Você pode montar desa forma:

    var sql = "SELECT matricula, ccusto, descricao FROM CENTRO_CUSTO WHERE 1=1 ";
newDataset.addColumn(&#34;matricula&#34;);
newDataset.addColumn(&#34;ccusto&#34;);
newDataset.addColumn(&#34;descricao&#34;);

if(constraints !&#61; null) {
    if(constraints.length &gt; 0) {

       for (var i &#61; 0; i &lt; constraints.length; i&#43;&#43;) {
            // AQUI VOCÊ TRATA O FILTRO
            if (constraints[i].fieldName &#61;&#61; &#39;matricula&#39;) {
                filtro &#43;&#61; &#34;AND matricula LIKE &#39;%&#34; &#43; constraints[i].initialValue &#43; &#34;%&#39; &#34;;
            }
            if (constraints[i].fieldName &#61;&#61; &#39;ccusto&#39;) {
                filtro &#43;&#61; &#34;AND ccusto LIKE &#39;%&#34; &#43; constraints[i].initialValue &#43; &#34;%&#39; &#34;;
            }
            if (constraints[i].fieldName &#61;&#61; &#39;descricao&#39;) {
                filtro &#43;&#61; &#34;AND descricao LIKE &#39;%&#34; &#43; constraints[i].initialValue &#43; &#34;%&#39; &#34;;
            }
        }

        filtro &#43;&#61; &#34;ORDER BY descricao &#34;;
    }
}

sql &#61; sql &#43; filtro;</code></pre>

Você quer buscar pela matrícula ou pela descrição? Pois parece que no seu código você está montando o select para buscar somente pela matrícula.

Adicionei um exemplo na minha resposta

Luis, eu estava passando pelo mesmo problema. Vou explicar como eu resolvi.

Estava filtando meu zoomColecao com o seguinte código:


filtro = 'id_selo_editorial,' + selectedItem["id_selo_editorial"];
reloadZoomFilterValues("zoomColecao", filtro);

Mesmo aplicando meu reloadZoomFilterValues o meu customDataset não estava sendo filtrado. COmo ele foi criado através de uma query ao banco de dados, então eu preciso tratar o filtro dentro do do meu createDataSet customizado, com esse código resolvi meu problema:


if(constraints != null) {
//tratamento de filtros 
    if(constraints.length > 0) {
       for (var i = 0; i < constraints.length; i++) {
            if (constraints[i].fieldName == 'id_selo_editorial') {
                filtro = "and id_selo_editorial="+constraints[i].initialValue;

            }
       }
    }
}
var myQuery = "select id_colecao, id_selo_editorial, desc_colecao from colecao where 1=1 "+filtro;

Espero ter ajudado de alguma forma. Fico a disposição.

Utilizo dessa forma já, o filtro não funciona em real time, no momento que o user vai digitando caractere por caractere dentro do zoom. Faz o teste no seu aí, tente usar o zoom filtrando sua coleção, porém no autocomplete do zoom.

@Luís, como está a estrutura do seu Zoom?

Coloquei mais detalhes no tópico.