Так, хорошо.

ИЛИ между линками разобрались как делается. Путём добавления поля-флажка. Но приведу небольшой примерчик:
PHP код:
qb = query.addDataSource(
tablenum(InventTable));
qb2 = qb.addDataSource(
tablenum(InventTable));
qb2.addRange(fieldnum(InventTable, Itemtype)).value( queryvalue( ItemType::BOM));
qb2.relations(false);
qb2.addLink(fieldNum(InventTable,ItemId),fieldNum(InventTable,ItemId));
qb2.joinMode( JoinMode::InnerJoin);
/* qb2 = qb.addDataSource(
tablenum(InventTable));
qb2.addRange(fieldnum(InventTable, Itemtype)).value( queryvalue( ItemType::Item));
qb2.relations(false);
qb2.addLink(fieldNum(InventTable,ItemId),fieldNum(InventTable,ItemId));
qb2.joinMode( JoinMode::InnerJoin);*/
вот почему если к главному датасоурсу добавить только один со связью InnerJoin , то всё нормально - отобразятся только Спецификации(ItemType::BOM). А если убрать заремаривание и добавить второй, то отобразятся все записи. Как будто нельзя добавлять два дочерних датасоурса со связями InnerJoin. Или может в них ещё какие свойства надо заполнить.
Цитата:
Единственное средство, которое приходит на ум - временные таблицы.
Да, тоже вариант. Хотя воспринимается как дубовый, но порой без него никак.