Constraint fazendo like em dois campos

Boa tarde.

Preciso filtrar usando LIKE em um dataset Interno (de formulário) usando createConstraint em dois campos.
Porém não estou conseguindo.

Exemplo

b71ce0bf-a48b-43b7-b020-81e1af63a2fe

Preciso retornar todos os registros que tenham “VALOR X” em um dos campos

var c01 = DatasetFactory.createConstraint("campo1", cPesquisa, cPesquisa, ConstraintType.SHOULD, true);

var c02 = DatasetFactory.createConstraint("campo2", cPesquisa, cPesquisa, ConstraintType.SHOULD, true);

cFiltro.push(c01);
cFiltro.push(c02);

var dataset = DatasetFactory.getDataset("dsSolicitadosEmp", null, cFiltro, null)

Se eu uso SHOULD, está trazendo todos.
Se eu uso MUST retorna nenhum.

Alguém sabe como resolver?

At
Rodrigo de Oliveira.

Já tentou o cFiltro.setLikeSearch( true ); ?

https://tdn.totvs.com/display/public/fluig/Acessando+Datasets

1 curtida

Rodrigo, como mencionado pelo Daniel, se o filtro estiver sendo feito dentro de um outro dataset, o correto é utilizar método setLikeSearch para indicar que se trata de uma constraint like.

Somente quando o dataset é acessando no fonte que passamos na construção da constraint o valor de true como último parâmetro para indicar que se trata do like.

No seu caso, caso esteja tentando acessar de algum script do backend, deve ficar assim:

    var c01 = DatasetFactory.createConstraint("campo1", cPesquisa, cPesquisa, ConstraintType.SHOULD);

    var c02 = DatasetFactory.createConstraint("campo2", cPesquisa, cPesquisa, ConstraintType.SHOULD);

   c01.setLikeSearch(true);
   c02.setLikeSearch(true);

    cFiltro.push(c01);
    cFiltro.push(c02);

    var dataset = DatasetFactory.getDataset("dsSolicitadosEmp", null, cFiltro, null)

Obs.: como se trata de um dataset customizado, recomendo que verifique se sua implementação está tratando o parâmetro de like para a construção dos dados. Se foi um construído a partir do próprio Fluig (Painel de Controle), já contem o padrão e por isso deveria funcionar.

Obrigado pela resposta @daniel.cabral.
Fiz um teste conforme documentação, mas não funcionou. Apresenta erro no console do navegador:

Uncaught TypeError: c01.setLikeSearch is not a function

Estou executando este dataset através de uma widget.
No arquivo view.ftl tenho a chamada para o arquivo vcXMLRPC.js.

@alefvinicius
Estou fazendo o filtro em um dataset interno, não é um dataset customizado.
É um dataset criado pelo próprio sistema, depois de publicar um formulário.

Há mais alguma sugestão?

At
Rodrigo de Oliveira.

Oi @redschenko

A função setLikeSearch é usado apenas quando o valor enviado possui %. Adicione o símbolo de % antes e depois da variável cPesquisa

https://tdn.totvs.com/display/public/fluig/Acessando+Datasets