Проблемы с фильтром записей
у меня возникли проблемы с фильтром набора записей ADO в устаревшем коде ASP Classic, и япытаюсь понять, что яя пытаюсь сделать не поддерживается, или если яЯ просто делаю это неправильно.
У меня есть набор записей элементов, и они имеют статус 1 (активный) или 0 (неактивный) и необязательный End_Date. В моем административном пользовательском интерфейсе у меня есть элемент управления, чтобы показать все элементы или только те, которые должны отображаться для конечных пользователей:Status = 1 AND ( End_Date is null OR End_Date > Date() )
Чтобы реализовать эту логику, я попытался:
rs.Filter = "Status = 1 AND ( End_Date = null OR End_Date > #" & Date() & "# )"
но я получаю
ADODB.Recordset (0x800A0BB9)
Unknown runtime error
После большого дурачения кажется, что ADO неt, как группировка парень вокруг условий End_Date в сочетании с условием AND. Если я возьму парены, это работает:
rs.Filter = "Status = 1 AND End_Date = null OR End_Date > #" & Date() & "#"
Но это'Это просто случайность - похоже, условия фильтра оцениваются по порядку, и поэтому я получаю результаты, которые хочу. Если я поменяю И на ИЛИ, паренсы сработают:
rs.Filter = "Status = 1 OR ( End_Date = null OR End_Date > #" & Date() & "# )"
Но, конечно, эта логика неверна - она показывает активные, но просроченные элементы.
Странно, если я перенесу условия, это снова сломается:
rs.Filter = "End_Date = null OR Status = 1 AND End_Date > #" & Date() & "# "
вылетает с той же ошибкой ADODB.
Я могу'не могу предсказать, что будет и выиграетработать, и документы, которые ячитаем очень схематично на ожидаемый синтаксисэто не чистый T-SQL!), ограничения и т. д. и все примеры, которые яУ нас было не более двух условий. Я неЯ не думаю, что мои условия настолько сложны. Может кто-нибудь сказать мне, если яЯ пытаюсь сделать это поддерживается, если естьлучший способ сделать это, или указать мне всеобъемлющие документы и образцы, которые соответствуют этой логике?
Спасибо!