21.06.2004, 16:09 | #1 |
Участник
|
проблема отрицаний в 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 ? |
|
21.06.2004, 16:51 | #2 |
----------------
|
value("!000001,!000002,!000003")
|
|
21.06.2004, 17:02 | #3 |
Участник
|
Спасибо. Заменю все запятые(,) в строке на (,!) и получу искомый value.
|
|