Código en Delphi 6, válido para Delphi for win32 y CodeGear RAD Studio (Delphi win32) | ||
DBNavigatorE es un componente idéntico a DBNavigator de delphi (de hecho es una copia a la que se han hecho una serie de modificaciones) al que se le ha añadido nuevas funcionalidades : Por una parte su aspecto y por otra la posibilidad de buscar un registro determinado por un valor que se nos pedirá. Esta búsqueda se hará directamente sobre los registros recuperados por la fuente de datos del control (TDBNavigatorE.Datasource) o entre los registros de una consulta distinta pero cuyos datos nos servirán para buscar más fácilmente el registro que nos interesa (por ejemplo buscar una factura determinada pero conociendo el nombre del cliente que es un dato que se encuentra en otra tabla).
Aspecto del componente :
Propiedades :
Las propiedades son las mismas que las de TDBNavigator más las siguientes nuevas :
FieldFindParam :
OrderBy : Campos de ordenación de los registros mostrados en la pantalla de registros encontrados.
KeyField : Campo clave. Se devolverá el valor de este campo cuando se pulse aceptar en la ventana de búsqueda en el caso de que ReturnedField sea vacío. (Es un campo de la tabla especificada en la propiedad TDBNavigatorE.FieldFindParam.Tablename).
LocateField : Campo de la fuente de datos de TDBNavigatorE sobre el que se buscará. Por defecto se buscará en el campo sobre el que se encuentre situado el cursor cuando se pulsa sobre el botón de búsqueda.
ReturnedField : Campo de la tabla TDBNavigatorE.FieldFindParam.Tablename vuyo valor se devolverá para buscar en el campo LocateField..
FieldFormat : Formato de los campos para formar la sentencia SELECT. Por defecto '%s'.
OtherFields : Nombre de los campos que se mostrarán en la pantalla de registros encontrados(Son campos de la tabla especificada en la propiedad TDBNavigatorE.FieldFindParam.Tablename).
SQLObject : Objeto TDataset de tipo Query. Debe tener una propiedad SQL.
SQLUpper : Función para convertir en mayúsculas. Por defecto UPPER (aunque puede ser UCASE o cualquier otra función que en SQL convierta una cadena a mayúsculas)
TableName : Nombre de la tabla (puede ser distinta a TDBNavigatorE.TableName)
Like : La búsqueda se hace como campo LIKE %cadena% (valor TRUE) sobre los datos del Select siguiente o como campo=cadena (valor FALSE) sobre la fuente de datos del control.
La sentencia SQL que se forma con los datos de FieldFindParam es la siguiente : SELECT {ReturnedField}, {KeyField}, OtherFields
FROM Tablename
WHERE {QSLUpper(KeyField) | KeyField} LIKE '%FINDTEXT%'
{ORDER BY OrderBy}FINDTEXT : Texto/Valor a buscar (Se recoge por pantalla)
Busca : Valor de LocateField = Valor de ReturnedField
Ejemplo :
Select Apellidos, NIF
From Clientes
Where UPPER(Apellidos) LIKE '%GALLEGO%'
Order by Apellidos, NIF
FindWindowPos : Posición de la ventana de resultados. Por defecto se coloca en el medio de la pantalla.
Left: Posición horizontal de la ventana (y).
Top: Posición vertical de la ventana (x)
Width : Anchura de la ventana.
Height : Altura de la ventana.
Gradiente :mirar
FieldName : Esta es una propiedad pública, que no publicada. Contendrá el valor del campo en el que se encuentra situado el cursor en el momento de pulsar sobre uno de los botones del navegador. Esta propiedad sólo contendrá un valor correcto cuando se pregunte sobre ella dentro de un evento que se haya provocado por la pulsación de uno de los botones, por ejemplo en el BeforeAction que salta después de pulsar un botón del navegador pero antes de ejecutar la acción de propio botón.
Eventos :
Sólo se ha modificado un evento el resto funcionan igual que el Navegador de Delphi.
BeforeAction : Salta cuando se pulsa sobre un botón del navegador y justo antes de ejecutar la acción del propio botón. Se le ha añadido un nuevo parámetro 'Cancel' que permitirá abortar la ejecución de la acción.
Para ver el funcionamiento de este componente descargue el siguiente ejemplo y mire su código fuente.