Показать сообщение отдельно
Старый 07.02.2008, 12:12   #1  
Lemming is offline
Lemming
Участник
Аватар для Lemming
 
1,144 / 343 (14) ++++++
Регистрация: 20.04.2004
Адрес: Москва, Чайнатаун в Люблино
Записей в блоге: 10
? Расширенные возможности Query - арифметические операции в условие Where.
Добрый день, уважаемые коллеги!

Существует ли возможность с помощью Query создать запрос, который в SQL выглядит так:

X++:
select * from ExtendedTestData where Amount + Amount1 - Amount2 <> 0;
Следующее выражение

X++:
exQueryString = strfmt("(( %1 + %2 - %3 <> 0 ))",
                           fieldId2name(TableNum(ExtendedTestData), fieldNum(ExtendedTestData, Amount)),
                           fieldId2name(TableNum(ExtendedTestData), fieldNum(ExtendedTestData, Amount1)),
                           fieldId2name(TableNum(ExtendedTestData), fieldNum(ExtendedTestData, Amount2)));
приводит к ошибке: Ошибка расширенного диапазона запроса: Синтаксическая ошибка рядом с 34.


А, например, вот такое выражение
X++:
exQueryString = strfmt("(( %1 + %2 - %3 > 0 ))", ...
Генерирует следующий SQL код

X++:
SELECT A.KEY_,A.AMOUNT,A.AMOUNT1,A.AMOUNT2,A.RECID
FROM EXTENDEDTESTDATA A
WHERE ((DATAAREAID=?)
AND (((AMOUNT+AMOUNT1)-AMOUNT2)>1=?))
ORDER BY A.DATAAREAID,A.RECID OPTION(FAST 1)
с ошибкой : [Microsoft][ODBC SQL Server Driver][SQL Server]Line 1: Incorrect syntax near '='.


Со ссылкой http://www.axaptapedia.com/Expressions_in_query_ranges знаком.

Собственно, сам вопрос: умеет ли парсер кверей разбирать текст запроса, содержащий арифметические выражения?