Здравия, уважаемые.
Всем спасибо за ответы, однако, пришлось вернуться к старой проблеме. Дело в том, что я в классе поставил showQueryValues = true, в результате опять появились поля на форме для выбора значений и стала возникать ошибка. Повторяю эксперимент: удаляю критерии в диалоге (удаляю вообще строки в таблице критериев) , и ошибка не возникает. Ставлю showQueryValues = false, а затем возвращаю в true, критерии заново появляются с пустыми значениями и при работе с классом появляется та же проблема.
Приведу её:
Код:
Описание ошибки SQL: [Microsoft][ODBC SQL Server Driver][SQL Server]Не удалось привязать составной идентификатор "B.ITEMID".
Оператор SQL: SELECT A.ITEMID FROM INVENTTABLE A WHERE (A.DATAAREAID=?) AND EXISTS
(SELECT 'x' FROM CUSTINVOICETRANS B,INVENTDIM C WHERE
((B.DATAAREAID=?) AND (((B.INVOICEDATE>=?) AND (B.INVOICEDATE<=?)) AND
(A.ITEMID=B.ITEMID))) AND ((C.DATAAREAID=?) AND ((((C.INVENTLOCATIONID=?)
OR (C.INVENTLOCATIONID=?)) OR (C.INVENTLOCATIONID=?)) AND
(B.INVENTDIMID=C.INVENTDIMID))) GROUP BY B.ITEMID,B.INVOICEDATE) GROUP
BY A.ITEMID,B.ITEMID,B.INVOICEDATE ORDER BY A.ITEMID
Цитата:
Сообщение от
mazzy
А зачем обнулять запрос?
Если речь идет именно об избыточном Range, то укажите ему пустую строку "".
Пустая строка эквивалентна отсутствию Range
Если речь идет о том, чтобы зафиксировать ваше условие в Range, то в свойстве Status программно задайте hidden или Locked.
Я так и сделал:
X++:
qbrItem = qr.dataSourceTable(tablenum(InventTable)).addRange(fieldnum(InventTable,ItemId));
qbrItem.value("");
qbrItem.status(RangeStatus::Hidden);
// qbrItem.status(RangeStatus::Locked);
Не помогло ни Hidden, ни Locked.
Что делать?