Diferencia entre revisiones de «TTprxADOBandFilter»
(No se muestran 6 ediciones intermedias del mismo usuario) | |||
Línea 1: | Línea 1: | ||
=Descripción= | =Descripción= | ||
El objeto '''TTprxADOBandFilter''' (Criterios de filtrado) permite filtrar registros de clases (no aplica a las consultas) usando criterios aplicados sobre cada campo. | El objeto '''TTprxADOBandFilter''' (Criterios de filtrado) permite filtrar registros de clases (no aplica a las consultas) usando criterios aplicados sobre cada campo. | ||
Los criterios aplicados son privados para cada usuario y pantalla. | |||
=[[QUEESESTO/IDENTIDAD|Identidad]]= | =[[QUEESESTO/IDENTIDAD|Identidad]]= | ||
Línea 24: | Línea 26: | ||
Cuando elijamos el campo "Categoria" se agregará al panel de criterios de selección de la siguiente manera: | Cuando elijamos el campo "Categoria" se agregará al panel de criterios de selección de la siguiente manera: | ||
[[Archivo:20250605 1125 CRITERIOS FILTRADO AGREGAR CAMPO CRITERIOS.png|miniaturadeimagen|no|Campo agregado a los criterios.]] | [[Archivo:20250605 1125 CRITERIOS FILTRADO AGREGAR CAMPO CRITERIOS.png|miniaturadeimagen|no|Campo agregado a los criterios.]] | ||
Cuando agregamos un campo a los criterios de filtrado lo estamos haciendo a una "banda" descripta en [[TTprxADOBandFilter_Band]]. | |||
La banda contiene: | |||
*"Sin uso" no está habilitado, si se agregan más campos siempre dirá "AND". | |||
*"Nombre del campo" muestra el nombre del campo agregado a la banda. | |||
*"Operador" permite indicar qué podemos hacer con ese campo (descripto apenas más abajo), | |||
*"Valor para el filtro" es el valor que queremos buscar. | |||
*"Quita el campo del filtro elimina la banda. | |||
===Operadores=== | |||
Los operadores habilitados son: | |||
*"=" buscará registros donde el valor del campo sea igual al ingresado. | |||
*"LIKE" buscará registros donde el valor del campo contenga el valor ingresado. | |||
*">" buscará registros donde el valor del campo sea mayor al ingresado. | |||
*">=" buscará registros donde el valor del campo sea mayor o igual al ingresado. | |||
*"<" buscará registros donde el valor del campo sea menor al ingresado. | |||
*"<=" buscará registros donde el valor del campo sea menor o igual al ingresado. | |||
*"<>" buscará registros donde el valor del campo sea distinto al ingresado. | |||
===Aplicar el filtro=== | |||
Una vez que hayamos ingresado todos los criterios que necesitamos podemos picar el botón de refrescar de la grilla para filtrar los registros, por ejemplo: | |||
[[Archivo:20250605 1136 FILTRO APLICADO.png|miniaturadeimagen|no|Filtro aplicado.]] | |||
===Agregar más campos=== | |||
Para agregar más campos al filtro simplemente repetimos la operación ya descripta, por ejemplo: | |||
[[Archivo:20250605 1139 AGREGAR UN CRITERIO DE FILTRADO.png|miniaturadeimagen|no|Agregar otro campo al filtro.]] | |||
En este caso agregamos un filtro sobre el campo "Ancestro" indicando que debe contener el texto "DataSetMaster", una vez agregado picamos sobre el botón de refrescar en la grilla y se aplicará el filtro sobre todos los registros. | |||
=Opciones adicionales= | |||
===Ver condición=== | |||
Permite ver la condición SQL armada según los criterios ingresados, por ejemplo: | |||
[[Archivo:20250605 1143 VER CONDICION.png|miniaturadeimagen|no|Ver condición SQL.]] | |||
===Guardar configuración=== | |||
Permite guardar los criterios seleccionados para que cuando volvamos a abrir la pantalla éstos aparezcan tal como los hemos definido, usa la tabla [[FILTROS/CONFIGURACION]]. | |||
===Eliminar configuración=== | |||
Elimina la configuración guardada previamente, usa la tabla [[FILTROS/CONFIGURACION]]. | |||
===Deshabilitar filtro=== | |||
Deshabilita el filtrado en esta pantalla, la pantalla traerá todos los registros existentes en la base de datos, usa la tabla [[FILTROS/CONFIGURACION]]. | |||
=Declaración= | |||
<pre> | |||
type | |||
TprxADOBandFilter = class(TComponent) | |||
private | |||
FQuery: TprxADOQuery; | |||
FQuerySQL: TStringList; | |||
FClientPanel: TPanel; | |||
FClientBevel: TBevel; | |||
FDataSet: TDataSet; | |||
FDataSet_Argumentos: TprxADOQuery; | |||
FInitialHeight: Integer; | |||
FFullMode: Boolean; | |||
FTraducir_OpcionesFiltrado_Text: String; | |||
FTraducir_Agregar_Text: String; | |||
FTraducir_AgregarOperador_Text: String; | |||
FTraducir_CerrarParentesis_Text: String; | |||
FTraducir_VerCondicion_Text: String; | |||
FTraducir_CargarConfiguracion: String; | |||
FTraducir_GuardarConfiguracion: String; | |||
FTraducir_EliminarConfiguracion: String; | |||
FTraducir_DeshabilitarFiltro: String; | |||
FTraducir_HabilitarFiltro: String; | |||
FPanelOPERADOR_Visible: Boolean; | |||
FConfigOptions: Boolean; | |||
FCondition: String; | |||
FListaComprobantes: TStringList; | |||
FListaCampos: TStringList; | |||
FEnabled: Boolean; | |||
protected | |||
procedure Set_DataSet(aValue: TDataSet); | |||
procedure Add_Band_Click(Sender: TObject); | |||
procedure Delete_Band_Click(Sender: TObject); | |||
procedure Band_Show(aBand: TTprxADOBandFilter_Band); | |||
procedure GetConditionClick(Sender: TObject); | |||
procedure CargarConfiguracionClick(Sender: TObject); | |||
procedure GuardarConfiguracionClick(Sender: TObject); | |||
procedure EliminarConfiguracionClick(Sender: TObject); | |||
procedure DeshabilitarFiltroClick(Sender: TObject); | |||
procedure HabilitarFiltroClick(Sender: TObject); | |||
function Field_DisplayLabel(aFieldName: String): String; | |||
property Query: TprxADOQuery read FQuery write FQuery; | |||
property QuerySQL: TStringList read FQuerySQL write FQuerySQL; | |||
property FullMode: Boolean read FFullMode write FFullMode; | |||
property Traducir_OpcionesFiltrado_Text: String read FTraducir_OpcionesFiltrado_Text; | |||
property Traducir_Agregar_Text: String read FTraducir_Agregar_Text; | |||
property Traducir_AgregarOperador_Text: String read FTraducir_AgregarOperador_Text; | |||
property Traducir_CerrarParentesis_Text: String read FTraducir_CerrarParentesis_Text; | |||
property Traducir_VerCondicion_Text: String read FTraducir_VerCondicion_Text; | |||
property Traducir_CargarConfiguracion: String read FTraducir_CargarConfiguracion; | |||
property Traducir_GuardarConfiguracion: String read FTraducir_GuardarConfiguracion; | |||
property Traducir_EliminarConfiguracion: String read FTraducir_EliminarConfiguracion; | |||
property Traducir_DeshabilitarFiltro: String read FTraducir_DeshabilitarFiltro; | |||
property Traducir_HabilitarFiltro: String read FTraducir_HabilitarFiltro; | |||
property ListaCampos: TStringList read FListaCampos write FListaCampos; | |||
property Enabled: Boolean read FEnabled write FEnabled; | |||
public | |||
constructor Create(AOwner: TComponent); override; | |||
destructor Destroy; override; | |||
function BandCount: Integer; | |||
procedure GetPopupOptions(Sender: TprxPopupMenu); | |||
procedure xxCargarConfiguracion(var aHandled: Boolean); | |||
procedure SelectXtd(var aHandled: Boolean); | |||
procedure prxADOBandFilter_Band_Operator_Add(aOperator: String; aFieldName: String; aOperation: String; aFieldValue: String); | |||
procedure prxADOBandFilter_Band_Enumeration_Add(aOperator: String; aFieldName: String; aOperation: String; aFieldValue: String); | |||
procedure prxADOBandFilter_Band_FK_Add(aOperator: String; aFieldName: String; aOperation: String; aFieldValue: String); | |||
procedure prxADOBandFilter_Band_Primitives_Add(aOperator: String; aFieldName: String; aOperation: String; aFieldValue: String); overload; | |||
procedure prxADOBandFilter_Band_Primitives_Add(aOperator: String; aFieldName: String; aOperation: String; aFieldValue: Variant); overload; | |||
procedure GetCondition(aList: TStringList; aFullFieldName: Boolean = True); overload; | |||
function GetCondition(aFullFieldName: Boolean = True): String; overload; | |||
function DataSet_Argumentos_Select: Boolean; | |||
function GetConditionForQBE: String; | |||
function GetConditionForSELECT: String; | |||
function ListaComprobantes_Refresh(aDataSet: TDataSet; aFieldName: String; aFieldValue: String): Boolean; | |||
procedure SetFieldValue(aFieldName: String; aFieldValue: String); | |||
property ClientPanel: TPanel read FClientPanel write FClientPanel; | |||
property ClientBevel: TBevel read FClientBevel write FClientBevel; | |||
property DataSet: TDataSet read FDataSet write Set_DataSet; | |||
property InitialHeight: Integer read FInitialHeight write FInitialHeight; | |||
property DataSet_Argumentos: TprxADOQuery read FDataSet_Argumentos write FDataSet_Argumentos; | |||
property PanelOPERADOR_Visible: Boolean read FPanelOPERADOR_Visible write FPanelOPERADOR_Visible; | |||
property ConfigOptions: Boolean read FConfigOptions write FConfigOptions; | |||
property Condition: String read FCondition write FCondition; | |||
property ListaComprobantes: TStringList read FListaComprobantes write FListaComprobantes; | |||
published | |||
end; | |||
</pre> | |||
=Implementación= | |||
===procedure Delete_Band_Click(Sender: TObject)=== | |||
Elimina una banda. | |||
===procedure xxCargarConfiguracion(var aHandled: Boolean)=== | |||
Carga la configuración desde [[FILTROS/CONFIGURACION]]. | |||
===procedure GuardarConfiguracionClick(Sender: TObject)=== | |||
Guarda la configuración en [[FILTROS/CONFIGURACION]]. | |||
===procedure EliminarConfiguracionClick(Sender: TObject)=== | |||
Elimina la configuración de [[FILTROS/CONFIGURACION]]. | |||
===procedure DeshabilitarFiltroClick(Sender: TObject)=== | |||
Deshabilita el filtro, agrega un registro a [[FILTROS/CONFIGURACION]] indicando: | |||
*Usuario es el código de usuario. | |||
*Tabla es el código de la tabla. | |||
*Orden siempre 0. | |||
*Banda agrega el texto "DISABLED" para indicar que está deshabilitado. | |||
*Los otros campos quedan en NULL. | |||
===procedure HabilitarFiltroClick(Sender: TObject)=== | |||
Vuelve a habilitar el filtro eliminando el registro descripto en el punto anterior. | |||
===procedure GetPopupOptions(Sender: TprxPopupMenu)=== | |||
Arma el menú de opciones al picar el botón de "Criterios de filtrado". | |||
===procedure Add_Band_Click(Sender: TObject)=== | |||
Agrega una banda al panel de criterios de filtrado. | |||
===procedure prxADOBandFilter_Band_Operator_Add(aOperator: String; aFieldName: String; aOperation: String; aFieldValue: String)=== | |||
Agrega la lista de operadores SQL a la banda, no se usa (casi siempre dice "AND"). | |||
===function Field_DisplayLabel(aFieldName: String): String=== | |||
Agrega el nombre del campo a la banda. | |||
===procedure prxADOBandFilter_Band_Enumeration_Add(aOperator: String; aFieldName: String; aOperation: String; aFieldValue: String)=== | |||
Cuando el campo elegido es una enumeración trae sus valores para poder elegir uno. | |||
===procedure prxADOBandFilter_Band_FK_Add(aOperator: String; aFieldName: String; aOperation: String; aFieldValue: String)=== | |||
Usado cuando el campo elegido tiene una clave foránea sobre otro. | |||
===procedure prxADOBandFilter_Band_Primitives_Add(aOperator: String; aFieldName: String; aOperation: String; aFieldValue: String)=== | |||
Usado cuando el campo elegido es un primitivo. | |||
===procedure GetCondition(aList: TStringList; aFullFieldName: Boolean = True)=== | |||
Arma la condición y la retorna en una lista de strings. | |||
===function GetCondition(aFullFieldName: Boolean = True): String=== | |||
Similar anterior, pero retorna la sentencia en un solo string. | |||
===procedure GetConditionClick(Sender: TObject)=== | |||
Ejecutado por el "Ver condición". | |||
===function GetConditionForQBE: String=== | |||
Retorna la condición para usar en la [[TTprxADODataSet_Options_FiltroQBEForm|Filtro por ejemplo F7 (TTprxADODataSet_Options_FiltroQBEForm)]]. | |||
===function GetConditionForSELECT: String=== | |||
Retorna la condición para hacer un SELECT. | |||
=Uso= | |||
Solo se usa en [[TTfvsDBClientFrameGridClases|Implementa grilla para clases (TTfvsDBClientFrameGridClases)]]. |
Revisión actual - 17:27 5 jun 2025
Descripción
El objeto TTprxADOBandFilter (Criterios de filtrado) permite filtrar registros de clases (no aplica a las consultas) usando criterios aplicados sobre cada campo.
Los criterios aplicados son privados para cada usuario y pantalla.
Identidad
- Ancestro: TComponent
- Carpeta: C:\DevelopPrx\library\filters
- Archivo: prxADOBandFilter.pas
Pantalla
Los criterios de filtrado solo se usan en Implementa grilla para clases (TTfvsDBClientFrameGridClases), esta grilla se vería como:

- El botón "Criterios de filtrado" es donde se muestran los criterios elegidos, picado ese botón aparece el menú que contiene los campos de la clase y las opciones adicionales.
- Los "campos de la clase" son todos los campos de la tabla que estamos consultando, podemos elegir cualquier campo para agregarlo a los criterios.
- Las "opciones adicionales" permiten, por ejemplo: guardar la selección para que esté disponible la próxima vez que abramos la pantalla.
Modo de uso
Selección de un campo
Para agregar un campo a los criterios de filtrado tenemos que picar el botón "Criterios de filtrado" y en la lista de campos elegir el que queremos, por ejemplo:

Cuando elijamos el campo "Categoria" se agregará al panel de criterios de selección de la siguiente manera:

Cuando agregamos un campo a los criterios de filtrado lo estamos haciendo a una "banda" descripta en TTprxADOBandFilter_Band.
La banda contiene:
- "Sin uso" no está habilitado, si se agregan más campos siempre dirá "AND".
- "Nombre del campo" muestra el nombre del campo agregado a la banda.
- "Operador" permite indicar qué podemos hacer con ese campo (descripto apenas más abajo),
- "Valor para el filtro" es el valor que queremos buscar.
- "Quita el campo del filtro elimina la banda.
Operadores
Los operadores habilitados son:
- "=" buscará registros donde el valor del campo sea igual al ingresado.
- "LIKE" buscará registros donde el valor del campo contenga el valor ingresado.
- ">" buscará registros donde el valor del campo sea mayor al ingresado.
- ">=" buscará registros donde el valor del campo sea mayor o igual al ingresado.
- "<" buscará registros donde el valor del campo sea menor al ingresado.
- "<=" buscará registros donde el valor del campo sea menor o igual al ingresado.
- "<>" buscará registros donde el valor del campo sea distinto al ingresado.
Aplicar el filtro
Una vez que hayamos ingresado todos los criterios que necesitamos podemos picar el botón de refrescar de la grilla para filtrar los registros, por ejemplo:

Agregar más campos
Para agregar más campos al filtro simplemente repetimos la operación ya descripta, por ejemplo:

En este caso agregamos un filtro sobre el campo "Ancestro" indicando que debe contener el texto "DataSetMaster", una vez agregado picamos sobre el botón de refrescar en la grilla y se aplicará el filtro sobre todos los registros.
Opciones adicionales
Ver condición
Permite ver la condición SQL armada según los criterios ingresados, por ejemplo:

Guardar configuración
Permite guardar los criterios seleccionados para que cuando volvamos a abrir la pantalla éstos aparezcan tal como los hemos definido, usa la tabla FILTROS/CONFIGURACION.
Eliminar configuración
Elimina la configuración guardada previamente, usa la tabla FILTROS/CONFIGURACION.
Deshabilitar filtro
Deshabilita el filtrado en esta pantalla, la pantalla traerá todos los registros existentes en la base de datos, usa la tabla FILTROS/CONFIGURACION.
Declaración
type TprxADOBandFilter = class(TComponent) private FQuery: TprxADOQuery; FQuerySQL: TStringList; FClientPanel: TPanel; FClientBevel: TBevel; FDataSet: TDataSet; FDataSet_Argumentos: TprxADOQuery; FInitialHeight: Integer; FFullMode: Boolean; FTraducir_OpcionesFiltrado_Text: String; FTraducir_Agregar_Text: String; FTraducir_AgregarOperador_Text: String; FTraducir_CerrarParentesis_Text: String; FTraducir_VerCondicion_Text: String; FTraducir_CargarConfiguracion: String; FTraducir_GuardarConfiguracion: String; FTraducir_EliminarConfiguracion: String; FTraducir_DeshabilitarFiltro: String; FTraducir_HabilitarFiltro: String; FPanelOPERADOR_Visible: Boolean; FConfigOptions: Boolean; FCondition: String; FListaComprobantes: TStringList; FListaCampos: TStringList; FEnabled: Boolean; protected procedure Set_DataSet(aValue: TDataSet); procedure Add_Band_Click(Sender: TObject); procedure Delete_Band_Click(Sender: TObject); procedure Band_Show(aBand: TTprxADOBandFilter_Band); procedure GetConditionClick(Sender: TObject); procedure CargarConfiguracionClick(Sender: TObject); procedure GuardarConfiguracionClick(Sender: TObject); procedure EliminarConfiguracionClick(Sender: TObject); procedure DeshabilitarFiltroClick(Sender: TObject); procedure HabilitarFiltroClick(Sender: TObject); function Field_DisplayLabel(aFieldName: String): String; property Query: TprxADOQuery read FQuery write FQuery; property QuerySQL: TStringList read FQuerySQL write FQuerySQL; property FullMode: Boolean read FFullMode write FFullMode; property Traducir_OpcionesFiltrado_Text: String read FTraducir_OpcionesFiltrado_Text; property Traducir_Agregar_Text: String read FTraducir_Agregar_Text; property Traducir_AgregarOperador_Text: String read FTraducir_AgregarOperador_Text; property Traducir_CerrarParentesis_Text: String read FTraducir_CerrarParentesis_Text; property Traducir_VerCondicion_Text: String read FTraducir_VerCondicion_Text; property Traducir_CargarConfiguracion: String read FTraducir_CargarConfiguracion; property Traducir_GuardarConfiguracion: String read FTraducir_GuardarConfiguracion; property Traducir_EliminarConfiguracion: String read FTraducir_EliminarConfiguracion; property Traducir_DeshabilitarFiltro: String read FTraducir_DeshabilitarFiltro; property Traducir_HabilitarFiltro: String read FTraducir_HabilitarFiltro; property ListaCampos: TStringList read FListaCampos write FListaCampos; property Enabled: Boolean read FEnabled write FEnabled; public constructor Create(AOwner: TComponent); override; destructor Destroy; override; function BandCount: Integer; procedure GetPopupOptions(Sender: TprxPopupMenu); procedure xxCargarConfiguracion(var aHandled: Boolean); procedure SelectXtd(var aHandled: Boolean); procedure prxADOBandFilter_Band_Operator_Add(aOperator: String; aFieldName: String; aOperation: String; aFieldValue: String); procedure prxADOBandFilter_Band_Enumeration_Add(aOperator: String; aFieldName: String; aOperation: String; aFieldValue: String); procedure prxADOBandFilter_Band_FK_Add(aOperator: String; aFieldName: String; aOperation: String; aFieldValue: String); procedure prxADOBandFilter_Band_Primitives_Add(aOperator: String; aFieldName: String; aOperation: String; aFieldValue: String); overload; procedure prxADOBandFilter_Band_Primitives_Add(aOperator: String; aFieldName: String; aOperation: String; aFieldValue: Variant); overload; procedure GetCondition(aList: TStringList; aFullFieldName: Boolean = True); overload; function GetCondition(aFullFieldName: Boolean = True): String; overload; function DataSet_Argumentos_Select: Boolean; function GetConditionForQBE: String; function GetConditionForSELECT: String; function ListaComprobantes_Refresh(aDataSet: TDataSet; aFieldName: String; aFieldValue: String): Boolean; procedure SetFieldValue(aFieldName: String; aFieldValue: String); property ClientPanel: TPanel read FClientPanel write FClientPanel; property ClientBevel: TBevel read FClientBevel write FClientBevel; property DataSet: TDataSet read FDataSet write Set_DataSet; property InitialHeight: Integer read FInitialHeight write FInitialHeight; property DataSet_Argumentos: TprxADOQuery read FDataSet_Argumentos write FDataSet_Argumentos; property PanelOPERADOR_Visible: Boolean read FPanelOPERADOR_Visible write FPanelOPERADOR_Visible; property ConfigOptions: Boolean read FConfigOptions write FConfigOptions; property Condition: String read FCondition write FCondition; property ListaComprobantes: TStringList read FListaComprobantes write FListaComprobantes; published end;
Implementación
procedure Delete_Band_Click(Sender: TObject)
Elimina una banda.
procedure xxCargarConfiguracion(var aHandled: Boolean)
Carga la configuración desde FILTROS/CONFIGURACION.
procedure GuardarConfiguracionClick(Sender: TObject)
Guarda la configuración en FILTROS/CONFIGURACION.
procedure EliminarConfiguracionClick(Sender: TObject)
Elimina la configuración de FILTROS/CONFIGURACION.
procedure DeshabilitarFiltroClick(Sender: TObject)
Deshabilita el filtro, agrega un registro a FILTROS/CONFIGURACION indicando:
- Usuario es el código de usuario.
- Tabla es el código de la tabla.
- Orden siempre 0.
- Banda agrega el texto "DISABLED" para indicar que está deshabilitado.
- Los otros campos quedan en NULL.
procedure HabilitarFiltroClick(Sender: TObject)
Vuelve a habilitar el filtro eliminando el registro descripto en el punto anterior.
procedure GetPopupOptions(Sender: TprxPopupMenu)
Arma el menú de opciones al picar el botón de "Criterios de filtrado".
procedure Add_Band_Click(Sender: TObject)
Agrega una banda al panel de criterios de filtrado.
procedure prxADOBandFilter_Band_Operator_Add(aOperator: String; aFieldName: String; aOperation: String; aFieldValue: String)
Agrega la lista de operadores SQL a la banda, no se usa (casi siempre dice "AND").
function Field_DisplayLabel(aFieldName: String): String
Agrega el nombre del campo a la banda.
procedure prxADOBandFilter_Band_Enumeration_Add(aOperator: String; aFieldName: String; aOperation: String; aFieldValue: String)
Cuando el campo elegido es una enumeración trae sus valores para poder elegir uno.
procedure prxADOBandFilter_Band_FK_Add(aOperator: String; aFieldName: String; aOperation: String; aFieldValue: String)
Usado cuando el campo elegido tiene una clave foránea sobre otro.
procedure prxADOBandFilter_Band_Primitives_Add(aOperator: String; aFieldName: String; aOperation: String; aFieldValue: String)
Usado cuando el campo elegido es un primitivo.
procedure GetCondition(aList: TStringList; aFullFieldName: Boolean = True)
Arma la condición y la retorna en una lista de strings.
function GetCondition(aFullFieldName: Boolean = True): String
Similar anterior, pero retorna la sentencia en un solo string.
procedure GetConditionClick(Sender: TObject)
Ejecutado por el "Ver condición".
function GetConditionForQBE: String
Retorna la condición para usar en la Filtro por ejemplo F7 (TTprxADODataSet_Options_FiltroQBEForm).
function GetConditionForSELECT: String
Retorna la condición para hacer un SELECT.
Uso
Solo se usa en Implementa grilla para clases (TTfvsDBClientFrameGridClases).