Pregunta

Quiero aplicar un filtro a una tabla de ventaja utilizando múltiples valores para un campo entero.

El SQL equivalente sería:

SELECT * FROM TableName WHERE FieldName IN (1, 2, 3)

¿Es posible hacer lo mismo en un aviso dentro de tener que repetir el campo usando un "o"?

Quiero algo como:

Filter := 'FieldName IN (1, 2, 3)'

En vez de:

Filter := 'FieldName = 1 OR FieldName = 2 OR FieldName = 3'
¿Fue útil?

Solución

Es posible usar el INLIST función para esto. Esa función existe para la compatibilidad visual de FoxPro. Se vería como:

Filter := 'InList(FieldName, 1, 2, 3)';

Sin embargo, no creo que actualmente esté optimizado para usar un índice. Entonces, si la mesa es muy grande, será mucho más eficiente usar el FieldName = 1 OR FieldName = 2 ... Versión del filtro.

Otros consejos

los IN La sintaxis solo funciona para el SQL, no para el motor de expresión que se usa en filtros e índices.

Como ya sugirió por Mark, usaría el FieldName = 1 OR FieldName = 2 ... sintaxis.

Más información sobre el Advantage Expression Engine y Advantage Optimized filters está en la ayuda:

http://devzone.advantagedatabase.com/dz/webhelp/advantage10.1/master_advantage_expression_engine.htm

http://devzone.advantagedatabase.com/dz/webhelp/advantage10.1/master_advantage_optimized_filters.htm

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top