Показать сообщение отдельно
Старый 21.06.2004, 16:09   #1  
kgksoft is offline
kgksoft
Участник
 
37 / 107 (4) +++++
Регистрация: 24.12.2003
? проблема отрицаний в 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 ?