Страница 1 из 1

Конструктор Where: OR и AND

Добавлено: 17 Апрель 2007, 4:40
StillZero
В конструкторе WHERE две строки:
1. SELF.Select.Where(RV:RestTypeID,GLO:InventarRestID,'=','AND')
2. SELF.Select.Where(RV:RestTypeID,'','is null','OR')
т.е. по итогу должен получиться запрос вида
WHERE RestTypeID = число OR RestTypeID IS NULL

по логу формируется не OR, а AND, т.е.
WHERE RestTypeID = число AND RestTypeID IS NULL

если вторую строку заменить на строку такого же типа как и первая, то запрос формируется правильно через OR, т.е.
1. SELF.Select.Where(RV:RestTypeID,GLO:InventarRestID,'=','AND')
2. SELF.Select.Where(RV:RestTypeID,GLO:InventarRestID2,'=','OR')
получаем
WHERE RestTypeID = число OR RestTypeID = число

Re: Конструктор Where: OR и AND

Добавлено: 17 Апрель 2007, 13:10
Andrew™
StillZero писал(а):В конструкторе WHERE две строки:
1. SELF.Select.Where(RV:RestTypeID,GLO:InventarRestID,'=','AND')
2. SELF.Select.Where(RV:RestTypeID,'','is null','OR')
т.е. по итогу должен получиться запрос вида
WHERE RestTypeID = число OR RestTypeID IS NULL

по логу формируется не OR, а AND, т.е.
WHERE RestTypeID = число AND RestTypeID IS NULL
взял пример ABCMAVT, там есть SQLBrowseAccounts, в ней есть дочерняя Browse по позициям, выставил следующий фильтр:

Код: Выделить всё

 SELF.Select.Where(SQLAccPos:AccRef,SQLAccounts:AccRef,'=','AND')
 SELF.Select.Where(SQLAccounts:TstDate,'','is null','OR')
в логе вижу:

Код: Выделить всё

WHERE A."AccRef"=? OR C."TstDate" is null
готовь пример на базе ABCMAVT.APP

и вообще ты меня обманываешь ;)

Код: Выделить всё

1. SELF.Select.Where(RV:RestTypeID,GLO:InventarRestID,'=','AND')
2. SELF.Select.Where(RV:RestTypeID,'','is null','OR')
должно быть не

Код: Выделить всё

WHERE RestTypeID = число OR RestTypeID IS NULL
а

Код: Выделить всё

WHERE RestTypeID = ? OR RestTypeID IS NULL

Добавлено: 18 Апрель 2007, 5:15
StillZero
и вообще ты меня обманываешь
:) чутка тока, чебы понятней было

вообщем обновились мы сегодня наконец таки, проблема ушла сама собой

Добавлено: 18 Апрель 2007, 6:44
StillZero
...теперь другой косяк-багофича...теперь, правда, думаю, что понимаю почему :)
в конструкторе WHERE создаю две строки:
SELF.Select.Where(RV:RestTypeID,GLO:InventarRestID,'=','(AND')
SELF.Select.Where(RV:RestTypeID,'','is null','OR)')
запрос формируется без последней скобки, т.е.

Код: Выделить всё

 WHERE (RestTypeID = число OR RestTypeID IS NULL
и соответственно ругается на синтаксис

если, опять таки, вместо второй строки повторить аналог первой строки, типо
SELF.Select.Where(RV:RestTypeID,GLO:InventarRestID2,'=','OR)')
то запрос формируется правильно