проблема отрицаний в QueryBuildRange
Пример тестовый.
------------------------------------------------------
InventTable it;
QueryBuildDataSource qbds;
Query query = new Query();
QueryBuildRange qbr;
QueryRun qr;
str 50 ss = "000001,000002";
;
qbds = query.addDataSource(tablenum(InventTable));
qbr = qbds.addRange(fieldnum(InventTable,ItemId));
qbr.value("!("+ss+")");
info(qbds.toString());
qr = new QueryRun(query);
qr.reset();
while (qr.next())
{
it = qr.get(tableNum(InventTable));
info(it.ItemId);
}
------------------------------------------------------
Аксапта в данном случает генерирует правильный запрос
SELECT * FROM InventTable WHERE ((NOT (ItemId = (000001) OR ItemId = 000002)))
но при этом запрос выбирает все записи, в том числе с ItemId = 000001 и 000002 .
Этот же запрос, выполненный через SQL Query Analyser дает правильный результат.
Как делать отрицания типа
Not In (......) через QueryBuildRange ?
|