Uso de la técnica de consulta por formulario (QBF) en Microsoft Access

Número de KB original: 304428

Nota:

Requiere conocimientos básicos de macros, codificación e interoperabilidad. Este artículo solo se refiere a una base de datos de Microsoft Access (.mdb o .accdb).

Resumen

En este artículo se muestra cómo usar un formulario para especificar los criterios de una consulta. Esta técnica se denomina consulta por formulario (QBF).

Más información

En la técnica QBF, se crea un formulario en el que se especifican criterios de consulta. Este formulario contiene cuadros de texto en blanco. Cada cuadro de texto representa un campo de una tabla que desea consultar. Las entradas solo se realizan en los cuadros de texto para los que desea especificar criterios de búsqueda.

El formulario QBF es similar a un formulario de entrada de datos que tiene campos que coinciden con los campos de una tabla. Una tabla que tenga campos para Nombre, Dirección, Ciudad, Estado y Código Postal puede tener un formulario QBF que tenga los campos correspondientes. Para seleccionar determinados registros, puede escribir cualquier combinación de criterios de búsqueda en el formulario. Puede especificar solo una ciudad, una ciudad y un estado, o un código postal solo, o cualquier otra combinación. Los campos que deje en blanco se omitirán. Al hacer clic en un botón de comando del formulario, Access ejecuta una consulta que usa los criterios de búsqueda del formulario.

Para usar la técnica QBF, siga estos pasos:

  1. Abra la Northwind.mdb de base de datos de ejemplo.

  2. Cree un formulario que no se base en ninguna tabla o consulta y guárdelo como QBF_Form.

  3. En el nuevo formulario, cree dos cuadros de texto y un botón de comando que tenga las siguientes propiedades. A continuación, guarde el formulario:

    Text box 1
    ------------------
    Name: WhatCustomer
    
    Text box 2
    ------------------
    Name: WhatEmployee
    
    Command button 1:
    ------------------
    Caption: Search
    OnClick: QBF_Macro
    
  4. Cree la siguiente macro y guárdela como QBF_Macro:

    Action: OpenQuery
    Query Name: QBF_Query
    View: Datasheet
    Data Mode: Edit
    
  5. Cree la siguiente consulta nueva basada en la tabla Orders y guárdela como QBF_Query:

    Field: CustomerID
    Sort: Ascending
    Criteria: Forms![QBF_Form]![WhatCustomer] Or Forms![QBF_Form]![WhatCustomer] Is Null
    
    Field: EmployeeID
    Sort: Ascending
    Criteria: Forms![QBF_Form]![WhatEmployee] Or Forms![QBF_Form]![WhatEmployee] Is Null
    
    NOTE: When you type the criteria, make sure that you type the entire criteria in a single Criteria field; do not split the criteria by placing the 'Or' section on a separate row.  
    
    Field: OrderID
    Field: OrderDate
    
  6. Abra QBF_Form en la vista Formulario. Escriba las siguientes combinaciones de criterios. Haga clic en Buscar después de cada combinación:

    Customer ID   Employee ID  Result
    -------------------------------------------------------
    <blank>       <blank>      All 830 orders
    
    AROUT         <blank>      13 orders
    
    AROUT         4            4 AROUT orders for employee 4
    
    <blank>       4            156 orders for employee 4
    

Después de ver el conjunto de resultados de cada consulta, cierre la ventana Hoja de datos. A continuación, comience la siguiente búsqueda. Cada vez que hace clic en el botón Buscar , los parámetros de la consulta QBF filtran los datos en función de los criterios de búsqueda especificados en el formulario de consulta de QBF.

Notas sobre los criterios del parámetro QBF

La consulta QBF de ejemplo de este artículo implementa criterios en la consulta como

¡Formas! FormName! ControlName¡O formularios! FormName! ControlNameEs Null

para filtrar los datos. Estos criterios devuelven todos los registros coincidentes. Si el valor de criteria es null, se devuelven todos los registros para el campo especificado.

Puede especificar cualquiera de los siguientes criterios alternativos para devolver resultados ligeramente diferentes.

Nota:

En los siguientes criterios de ejemplo, se usa un carácter de subrayado (_) como carácter de continuación de línea. Quite el carácter de subrayado del final de la línea al volver a crear estos criterios.

  • ¡Como formularios! FormName! ControlName& "*" o _ Forms! FormName! ControlNameEs Null

    Esta instrucción criteria es la misma que la del ejemplo de QBF anterior, salvo que se puede consultar mediante un carácter comodín. Por ejemplo, si escribe "Jo" en un campo mediante esta instrucción criteria, la consulta devuelve todos los registros del campo que comienza por "Jo". Esto incluye a Johnson, Jones, Johanna, etc.

  • ¡Entre formularios! FormName! StartDate y forms! FormName! EndDate o _ Forms! FormName! StartDate es null

    Puede usar esta instrucción criteria para consultar un campo de fecha mediante los cuadros de texto Fecha de inicio y Fecha de finalización en el formulario de consulta. Se devuelven los registros cuyas fechas de inicio y finalización se encuentran entre los valores especificados en el formulario de consulta. Sin embargo, si omite un valor de fecha de inicio en el formulario, la consulta devuelve todos los registros, independientemente del valor de Fecha de finalización.

  • ¡Como formularios! FormName! ControlName& "*" o es null

    Esta instrucción criteria devuelve ambos registros que coinciden con los criterios y los registros que son null. Si los criterios son null, se devuelven todos los registros. Tenga en cuenta que el asterisco (*) se considera un parámetro porque forma parte de una expresión Like más grande. Dado que el asterisco es un valor de criterios codificados de forma rígida (por ejemplo, Like "*"), se devuelven los registros con valores NULL.

  • Como IIf(IsNull(Forms!FormName! [ControlName]), _ "*",[Forms]! [FormName]! [ControlName])

    Esta instrucción criteria devuelve todos los registros que coinciden con los criterios. Si no se especifica ningún criterio en el formulario de consulta, se devuelven todos los registros que no son NULL.

  • IIf(IsNull(Forms!FormName! [ControlName]), _ [FieldName],[Forms]! [FormName]! [ControlName])

    Esto devuelve todos los registros que coinciden con los criterios. Si no se especifica ningún criterio en el formulario de consulta, se devuelven todos los registros que no son NULL (el mismo resultado que en el ejemplo anterior).