Проблемы с фильтром записей

у меня возникли проблемы с фильтром набора записей 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!), ограничения и т. д. и все примеры, которые яУ нас было не более двух условий. Я неЯ не думаю, что мои условия настолько сложны. Может кто-нибудь сказать мне, если яЯ пытаюсь сделать это поддерживается, если естьлучший способ сделать это, или указать мне всеобъемлющие документы и образцы, которые соответствуют этой логике?

Спасибо!

Ответы на вопрос(4)

Ваш ответ на вопрос