Aplicando filtros a los datos con FIBPlus e IBDAC

Dos opciones de conectividad para Firebird en Delphi son los componentes FIBPlus de Devrace y los IBDAC de DevArt.

Ambos proveen de propiedades y métodos que permiten modificar de manera fácil la sección WHERE de las instrucciones SQL de consulta, y que otros conjuntos de componentes no traen.

Empezaré con los FIBPlus. Cuentan con una propiedad llamada Conditions que permite agregar criterios de búsqueda de manera fácil, vamos a un ejemplo directamente:

Si tenemos la tabla CUENTAS donde queremos aplicarle un filtro
en base al campo NIVEL, de tipo INTEGER, y deseamos obtener todas las cuentas de nivel 1, entonces podemos crear
la condición NIVEL=1 ya sea en modo de diseño, haciendo click en la propiedad Conditions del componente pFIBDataset:

Después en el código podemos activar o desactivar esa condición en específico, con este código:

pFIBDataset1.Close;
 
pFIBDataset1.Conditions.ByName(‘NIVEL’).Enabled := true;
pFIBDataset1.ApplyConditions(false);
pFIBDataset1.Open;

Como se aprecia, es muy sencillo el uso de Conditions, simplemente se activa la condición y se debe ejecutar el método ApplyConditions para que se modifique el SQL. El parámetro de ApplyConditions define si se abre el dataset, lo cual por claridad en código siempre trato de ponerlo en falso y posteriormente hacer un Open al dataset -simple cuestión de gustos-.

En IBDAC, es un poco distinto, ya que se hace utilizando dos métodos de IBCQuery: DeleteWhere y AddWhere. Con DeleteWhere se eliminan las condiciones y con AddWhere se agregan una a una los criterios de filtrado. Con el mismo ejemplo y usando IBDAC, quedaría así el código:

 
IBCQuery1.Close;
IBCQuery1.DeleteWhere;
IBCQuery1.AddWhere(‘NIVEL=1′);
IBCQuery1.Open;

Ambos conjuntos de componentes son muy buenos para conectarse a Firebird desde Delphi, y estas facilidades ayudan mucho en los desarrollos ya que permiten hacer modificaciones al vuelo a la sección WHERE de las instrucciones SQL de los datasets.