Los rangos en un query personalizado los usamos cuando queremos por ejemplo hacer que nuestra consulta nos funcione con filtros como && o || que normalmente en una sentencia while select es fácil de hacer, pero en un .range para un query no nos funciona fácilmente, la ventaja de los query es que podemos usar el valor para filtrar como lo hace Dynamics Ax por ejemplo los valores que empiecen ABC seria “ABC*”, les voy a mostrar un truco sencillo con algunos ejemplos para usar el query y permitir filtrar con &&, ||, >=, < para un mismo campo.
Para esto usamos la función strFmt que nos reemplazara los parametros % con el valor que le pasemos, veamos unos ejemplos
Supongamos que queremos filtrar los clientes que sean de dos grupos, es decir la CustTable donde el campo CustGroup sea igual a A o igual a B, esto sería de la siguiente manera:
Tenemos la variable qbsCustTable que es de tipo QueryBuildDatasource.
1 2 3 4 5 6 | qbsCustTable.addRange(fieldNum(CustTable, CustGroup)).value( strFmt('((%1 == %2) || (%3 == %4))', fieldStr(CustTable, CustGroup), //%1 "A", //%2 fieldStr(CustTable, CustGroup), //%3 "B")); //%4 |
Si queremos filtrar clientes donde el campo de la cuenta del cliente sea mayor a 100 o que el grupo de clientes sea mayor a 1000, de esta manera podemos combinar campos distintos en la consulta, puedes agregar mas parámetros o usar menos, un ejemplo puede ser el siguiente.
1 2 3 4 5 6 | qbsCustTable.addRange(fieldNum(CustTable, CustGroup)).value( strFmt('((%1 > %2) || (%3 > %4))', fieldStr(CustTable, AccountNum), //%1 "100", //%2 fieldStr(CustTable, CustGroup), //%3 "1000")); //%4 |