Problemas con el filtro de conjunto de registros

Estoy teniendo problemas con un filtro en un conjunto de registros ADO en el código ASP clásico heredado, y estoy tratando de entender si lo que estoy tratando de hacer no es compatible o si lo estoy haciendo mal.

Tengo un conjunto de registros de elementos, y tienen un estado de 1 (activo) o 0 (inactivo), y una fecha de finalización opcional. En mi interfaz administrativa de usuario, tengo un control para mostrar todos los elementos o solo aquellos que deberían mostrarse a los usuarios finales:Status = 1 AND ( End_Date is null OR End_Date > Date() )

Para implementar esa lógica, intenté:

rs.Filter = "Status = 1 AND ( End_Date = null OR End_Date > #" & Date() & "# )"

pero me sale

ADODB.Recordset (0x800A0BB9)
Unknown runtime error

Después de muchas bromas, parece que a ADO no le gustan los grupos de agrupación en torno a las condiciones End_Date en combinación con la condición AND. Si saco los parens, esto funciona:

rs.Filter = "Status = 1 AND End_Date = null OR End_Date > #" & Date() & "#"

Pero eso es solo un accidente: parece que las condiciones del filtro se evalúan en orden, y así obtengo los resultados que deseo. Si cambio el AND a OR, los parens funcionan:

rs.Filter = "Status = 1 OR ( End_Date = null OR End_Date > #" & Date() & "# )"

Pero, por supuesto, esa lógica es incorrecta: muestra elementos activos pero caducados.

Curiosamente, si muevo las condiciones, se rompe de nuevo:

rs.Filter = "End_Date = null OR Status = 1 AND End_Date > #" & Date() & "# "

Se bloquea con el mismo error ADODB.

Parece que no puedo predecir lo que funcionará y lo que no funcionará, y los documentos que he leído son muy incompletos sobre la sintaxis esperada (¡no es T-SQL puro!), Las limitaciones, etc. y todos los ejemplos que menciono He visto tener a lo sumo dos condiciones. No creo que mis condiciones sean tan complejas. ¿Alguien puede decirme si se admite lo que estoy tratando de hacer, si hay una mejor manera de hacerlo o indicarme documentos y ejemplos completos que coincidan con este tipo de lógica?

¡Gracias!

Respuestas a la pregunta(4)

Su respuesta a la pregunta