For build complex queries, we can use any field, but normally, DataAreaId is used.
query = new Query(); dsInventTable = query.addDataSource(tableNum(InventTable)); // Add our range queryBuildRange = dsInventTable.addRange(fieldNum(InventTable, DataAreaId));Query values:
queryBuildRange.value(strFmt('((ItemType == %1) || (ItemId == "%2"))', any2int(ItemType::Service), queryValue("B-R14")));Working with dates:
queryBuildRange.value(strFmt('(ModifiedDate > %1)', Date2StrXpp(01012000)));Complex queries with relations:
query = new Query(); dsInventTable = query.addDataSource(tableNum(InventTable), tableStr(InventTable)); dsInventItemBarCode = dsInventTable.addDataSource(tableNum(InventItemBarCode), tableStr(InventItemBarCode)); dsInventItemBarCode.relations(true); dsInventItemBarCode.joinMode(JoinMode::ExistsJoin); // Add our two ranges queryBuildRange1 = dsInventTable.addRange(fieldNum(InventTable, DataAreaId)); queryBuildRange2 = dsInventItemBarCode.addRange(fieldNum(InventItemBarCode, DataAreaId)); queryBuildRange2.value(strFmt('(ModifiedDate > InventTable.ModifiedDate)'));Or
queryBuildRange2.value(strFmt('((%1.%2 == %3) || ((%1.%2 == %4) && (%1.%5 == %6)))', query.dataSourceTable(tableNum(InventTable)).name(), // InventTable %1 fieldStr(InventTable, ItemType), // ItemType %2 any2int(ItemType::Service), // %3 any2int(ItemType::Item), // %4 fieldStr(InventTable, ItemId), // ItemId %5 fieldStr(InventItemBarCode, ItemId))); // %6Dimensions: Corrected. Thanks Alex.
queryBuildRange = dsLedgerTrans.addRange(fieldId2Ext(fieldNum(LedgerTrans, Dimension),1)); queryBuildRange.value("some value");
2 comments:
It's not work:
queryBuildRange.value(strFmt('((Dimension == %1) || (Dimension2_ == "%2"))', "some dim1 value", "some dim2 value"));
PS Check discussion at axaptapedia.
Thanks a lot Alex... You're right.
Post a Comment