¿Puedo usar un filtro "in" en una tabla de base de datos de ventaja (tadstable)?
-
26-10-2019 - |
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'
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