Estou consumindo um dataset, e preciso passar um array dentro da constraint, para que seja usado como filtro.
O usuário vai digitar vários números de notas dentro de um input, esse carrega esses números de notas dentro de um array, depois disso preciso usar esse array como filtro em um dataset que vai me trazer os itens das notas.
Alguma ideia de como fazer?
SOLUÇÃO!!
A constraint estava dentro de aspas simples no SQL do dataset, por isso reconhecia como texto.
Apenas criei uma contraint com o array contendo o numero das notas:
var c2 = DatasetFactory.createConstraint("fantasia", nota, nota, ConstraintType.MUST);
var dataset = DatasetFactory.getDataset("ConsultaItensCarga", null, new Array(c1, c2,c3), null);
Dentro do dataset chamei a constraint sem as aspas simples, como abaixo:
numnota in ("+constraints[1].initialValue+")
Dessa maneira ele fez a consulta correta!
Obrigado pelo empenho em ajudar!
Bom dia,
Não é possível enviar essas notas numa única constraint separados por um escape qualquer e então dar um split neles dentro do dataset?
Boa tarde Gustavo,
Como citei acima, consegui executar removendo as aspas simples, mas a tua ideia não é muito diferente do que o colega abaixo citou, e acredito que funcionaria.
Obrigado pela ajuda.
Bom dia,
Antes de consultar o dataset, crie as constraints no cliente conforme a documentação.
Dentro do seu dataset, valide se há alguma constraint e vá adicionando os valores para uma variável:
var filtro = " AND NOME_DO_CAMPO IN (";
if (constraints != null) {
for (var i = 0; i < constraints.length; i++) {
if (constraints[i].fieldName == "NOME_DO_CAMPO") {
filtro += " '" +constraints[i].initialValue + "' ,";
}
}
}
filtro += filtro.substring(0, filtro.length - 1); // TIRA A VIRGULA EXTRA NO FINAL
filtro += ") ";
E depois, monte a sua SQL com os filtros
var sql = "SELECT CAMPO_1, CAMPO_2 FROM TABELA WHERE 1=1 " + ((constraints != null) ? filtro : " ");
Este é um exemplo bem simples. Não cheguei a testar, mas acredito que se você seguir por este caminho consiga montar o que precisa.
Abs.
Boa tarde Luiz,
Felizmente identifiquei que eram as aspas, e removendo-as consegui executar corretamente, porém acredito que a sua sugestão também funcionaria.
Obrigado pela ajuda.
Ótima a opção acima. Porém como passar os dados na constraint no exemplo acima. Sendo que estou usando no formulário para carregar via SELECT .
Como está o código do formulário: