Explanatory Question
addRange()
Read the answer carefully and go through the related questions on the right side to improve your understanding of this topic.
addRange(...).value(queryValue(...))This is used for exact value matches.
qbdsANSARIProgramTable.addRange(fieldNum(ANSARIProgramTable, ProgramStatus)).value(queryValue(ANSARIProgramStatus::Active)); qbdsANSARIProgramCustomer.addRange(fieldNum(ANSARIProgramCustomer, ProgramStatus)).value(queryValue(ANSARIProgramStatus::Active)); qbdsANSARIProgramCustomer.addRange(fieldNum(ANSARIProgramCustomer, CustAccount)).value(_custAccount);
SysQuery::range(...) for date rangesUsed to check if a date is within a range.
qbdsANSARIProgramTable.addRange(fieldNum(ANSARIProgramTable, ProgramStartDate)).value(SysQuery::range(dateNull(),today)); qbdsANSARIProgramTable.addRange(fieldNum(ANSARIProgramTable, ProgramEndDate)).value(SysQuery::range(today,dateNull())+','+SysQuery::value(dateNull())); qbdsANSARIProgramCustomer.addRange(fieldNum(ANSARIProgramCustomer, ProgramStartDate)).value(SysQuery::range(dateNull(),today)); qbdsANSARIProgramCustomer.addRange(fieldNum(ANSARIProgramCustomer, ProgramEndDate)).value(SysQuery::range(today,dateNull())+','+SysQuery::value(dateNull())); qbdsSalesTable.addRange(fieldNum(SalesTable, SalesType)).value (queryValue (SalesType:: Sales)); QueryBuildDataSource queryBuildDataSource = query.addDataSource(tableNum (TaxTrans)); queryBuildDataSource.addRange(fieldnum (TaxTrans, TaxPeriod)).value (SysQuery:: value (taxReportJournal.TaxPeriod)); queryBuildDataSource.addRange(fieldnum (TaxTrans, TaxDirection)).value(SysQuery::value(TaxDirection::IncomingTax)); queryBuildDataSource.addRange(fieldnum (TaxTrans, TaxDirection)).value (SysQuery:: value (TaxDirection::OutgoingTax)); queryBuildDataSource.addRange(fieldNum (TaxTrans, TaxOrigin)).value (SysQuery:: valueNot (TaxOrigin::TaxReporting));
qbdsSalesLine.addRange(fieldNum(SalesLine, SalesQty)).value('>0'); dsInventSum.addRange(fieldNum(InventSum, PhysicalInvent)).value('>0'); dsInventSum.addRange(fieldNum(InventSum, ClosedQty)).value (queryValue(NoYes:: No));
SysQuery::valueNot(...) to exclude valuesThis is used to exclude enum values.
qbdsANSARIProgramTable.addRange(fieldNum(ANSARIProgramTable, ProgramType)).value(SysQuery::valueNot(ANSARIProgramType::CustomerHoldback));
In your provided code, you are using 3 distinct ways to add ranges:
queryValue() — for exact matching.
SysQuery::range() — for range comparisons (mostly dates).
SysQuery::valueNot() — for exclusion logic.
First read the answer fully, then try to explain it in your own words. After that, open a few related questions and compare the concepts. This method helps you remember the topic for a longer time and improves exam preparation.