Cuando operamos un conjunto de datos, a menudo necesitamos filtrar los datos. Por ejemplo: una tabla de datos llamada Cliente tiene CustNo, CustName, País, Dirección, Teléfono, Estado, Tasa de impuestos y otros campos. Para registros de clientes con China o números de clientes superiores a 1000, es necesario filtrar el conjunto de datos. En resumen, existen los siguientes métodos de filtrado:
1. Usando las propiedades de filtro de TTable y TQuery
1. Establezca la propiedad Filtro en tiempo de diseño.
Por ejemplo, establezca Filtro en: País='China' y luego cambie la propiedad Filtrado a Verdadero (tenga en cuenta que el filtrado solo es efectivo cuando Filtrado es Verdadero). Entonces solo podrá ver los registros cuyo contenido del campo País correspondiente sea 'China'.
Los operadores que se pueden utilizar al configurar el filtro son: <, >, <=, >=, =, <>, AND, OR, NOT.
Por ejemplo, si configura el filtro en: CustNo>=1000yCustNo<=5000, solo podrá ver registros de clientes con números de clientes entre 1000 y 5000.
2. Filtrado dinámico durante la ejecución del programa.
Para cambiar la propiedad Filtro mientras el programa se está ejecutando, esto incluye dos situaciones:
(1) El lado derecho del operador es una constante, por ejemplo: Tabla1Filtro:=′Estado′+′=′+′′′HI′′′;
Nota: Las constantes de cadena deben estar entre tres pares de comillas simples.
(2) El lado derecho del operador no es una constante, puede ser un valor especificado por una variable o un valor dado por un cuadro de entrada. En este momento, debe utilizar la función Formatear. El formato del código es: Table1Filter:=Format(′State′+′=′+′′′%S′′′,[StateValue]); donde StateValue es una variable de cadena a la que se le ha asignado un valor y también puede estar en otras formas, por ejemplo: Editar1Texto.
2. Utilice ApplyRange para filtrar registros en el conjunto de datos.
Al ejecutar el siguiente código, solo podrá ver registros de clientes con números de cliente entre 1000 y 5000. Los diversos procesos que componen esta rutina son:
Aplicar rango, establecer inicio de rango, establecer fin de rango.
Tabla1SetRangeStart;
Tabla1[′NºCliente′]:=1000;
Tabla1SetRangeEnd;
Tabla1[′NºCliente′]:=5000;
Tabla1AplicarRango;
Nota: Este proceso solo funciona en campos indexados. Si desea filtrar según campos no indexados, también puede utilizar un pequeño truco: crear un índice falso. El método de implementación es: Table1.IndexFieldNames:=nombre de campo; Delphi también proporciona métodos simples para llamar a SetRangeStart, SetRangeEnd y ApplyRange, por ejemplo: Table1.SetRange([Edit1.Text],[Edit2.Text]);
3. Utilice el evento OnFilterRecord para filtrar. El evento OnFilterRecord le permite crear programas de filtrado basados en campos sin clave, por ejemplo:
PRocedureTForm1.Table1FilterRecord(DataSet:TDataSet;varAccept:Boolean);
comenzar
Aceptar:=DataSet[′Estado′]=′CA′;
fin;
4. Declaraciones SQL usando el control TQuery
1.Las declaraciones SQL no contienen variables ni parámetros
Seleccionar*delCliente
DondeCustNo>=1000yCustNo<=5000
2.Las declaraciones SQL contienen parámetros
Seleccionar*delCliente
DondeNºCliente>=:NºCliente
Al parámetro CustNo se le asigna un valor durante el tiempo de ejecución.
3.Las declaraciones SQL contienen variables
En este momento, el código para agregar declaraciones SQL al control TQuery debe escribirse así:
Consulta1.Cerrar;
Consulta1.SQL.Borrar;
Query1.SQL.Add(Format(′Select*fromCustomer′+′′+′whereState=′+′′′%S′′′,[StateValue]));
Query1.Open; Entre los cuatro métodos anteriores, el cuarto es el más potente y el más flexible de usar.