Clase para configurar el cuadro de diálogo "Buscar y reemplazar" de Access (para Access 2000 o superior)


Volver

Clase FindDialog

Normalmente, si queremos configurar el cuadro de diálogo “Buscar y Reemplazar”, deberíamos ir a Menu – Herramientas – Opciones – pestaña Modificar/Buscar, y seleccionar una opción de la sección “Comportamiento predeterminado de Buscar y reemplazar”. Estas opciones nos permiten configurar el cuadro de una manera bastante general (que, tal vez, en nuestro caso, no sea suficiente).

Si queremos poder configurar todas las opciones de este cuadro de diálogo, podemos en cambio, utilizar el objeto FindDialog. FindDialog es una clase que manipula los cuadros de texto, cuadros combinados y botones de verificación de “Buscar y reemplazar”. Me he basado en el método DoCmd.FindRecord para su diseño, aunque dado que se refiere directamente al cuadro de diálogo de Access, tiene alguna funcionalidad extendida sobre éste. Su uso es muy sencillo y se compone de las siguientes propiedades:

  • FieldName: Valor tipo string que establece el nombre del campo en donde se realizará la búsqueda (si este valor está establecido, tendrá prioridad sobre la propiedad OnlyCurrentField)
  • FindTab: Valor boolean que indica si se seleccionará la pestaña “Buscar”
  • FindWhat: Valor tipo string que establece la cadena que se buscará.
  • Match: Indica el modo de búsqueda. Tomará el valor de una de las constantes de la enumeración acFindMatch:
    • acAnywhere: indica que se buscará en cualquier parte del campo.
    • acStart: indica que se buscará al principio del campo
    • acEntire: indica que se buscará haciendo coincidir con la totalidad del campo
  • MatchCase: Valor boolean que especifica si la búsqueda tiene en cuenta la coincidencia de mayúsculas y minúsculas
  • OnlyCurrentField: Indica el ámbito de búsqueda y toma el valor de una constante de la enumeración acFindField:
    • acAll: especifica que la búsqueda se hace en todos los campos de cada registro
    • acCurrent: especifica que la búsqueda se limita al campo actual de cada registro
  • ReplaceBy: Valor de cadena queestablece la cadena de sustitución
  • ReplaceTab: Valor bolean que indica si se seleccionará la pestaña “Reemplazar”
  • Search: Indica la dirección en que se realizará la búsqueda. Toma el valor de una constante de la enumeración acSearchDirection
    • acUp: Especifica si la búsqueda se produce desde el registro activo hacia el principio de los registros
    • acDown: hacia abajo hacia el final de los registros
    • acSearchAll: desde el registro activo hacia el final de los registros y luego desde el principio de los registros hasta el registro activo, de forma que se busque en todos los registros
  • SearchAsFormatted: Valor boolean que especifica si la búsqueda incluye los datos con formato

Todas estas propiedades son opcionales. Si no se diera valor a cualquiera de ellas, se tomarían los valores por defecto o simplemente se conservarían los valores que el usuario hubiera puesto con anterioridad dentro de la misma sesión de trabajo.

Por ejemplo, este código mostraría el cuadro "Buscar y reemplazar" con los siguientes valores:

  • Cadena a buscar: "que"
  • Buscar en: todos los campos
  • Coincidir: cualquier parte del campo
  • Dirección de la búsqueda: en todos los sentidos
    '********************************
    Dim FindDlg As FindDialog
    
        Set FindDlg = New FindDialog
        
        With FindDlg
            .FindWhat = "que"
            .OnlyCurrentField = acAll
            .Match = acAnywhere
            .Search = acSearchAll
            
            .Show
        End With
        
        Set FindDlg = Nothing
    '********************************
He hecho también una clase para controlar los cuadros de diálogo "Buscar" y "Reemplazar" de Access 97. El funcionamiento es prácticamente idéntico al descrito arriba, salvo alguna pequeña excepción que encontraréis en el ejemplo que os podéis descargar.

FindDialog97finddialog97.zip 76 KB

FindDialogfinddialog.zip 59 KB

Contactar Última actualización 18/11/2004    © Juan M. Afán deRibera