Cómo implementar un formulario de consulta (QBF) en un proyecto de Access


Avanzado: requiere conocimientos avanzados de código, interoperabilidad y multiusuario.

Este artículo se aplica únicamente a proyectos de Microsoft Access (.adp).

Para obtener una versión de este artículo para Microsoft Access 2000, vea
235359 .

Resumen


En este artículo se muestra cómo utilizar un formulario de Microsoft Access para especificar los criterios de consulta en un proyecto de Access.

Más información


En una base de datos de Access (.mdb) o de Microsoft Office Access 2007 (.accdb) puede utilizar la técnica de formulario de consulta (QBF) para crear un "formulario de consulta" en el que introducir criterios. El formulario de consulta contiene cuadros de texto o cuadros combinados en blanco, cada uno de los cuales representa un campo de la tabla de Access que desea consultar. Efectúe entradas sólo en los cuadros para los que desee especificar criterios de búsqueda.

También puede implementar la técnica QBF en un proyecto de Access. En un proyecto de Access, utilizaría un procedimiento almacenado para encontrar los registros que deseara ver y después crearía otro formulario que mostrara el resultado del procedimiento almacenado, de la manera siguiente.

Crear un procedimiento almacenado

Siga estos pasos para crear un procedimiento almacenado que utilizará para devolver datos a un formulario:
  1. Abra el proyecto de ejemplo de Access, NorthwindCS.adp. De forma predeterminada, este archivo se instala en la carpeta <Unidad>:\<Ejemplos de Microsoft Access>.
  2. En Microsoft Office Access 2003 o en Microsoft Access 2002, haga clic en Consulta en el menú
    Insertar.

    En Microsoft Office Access 2007, haga clic en la ficha Crear.
  3. En Access 2003 o en Access 2002, haga clic en Crear un procedimiento almacenado de texto en el cuadro de diálogo
    Nueva consulta y, a continuación, haga clic en
    Aceptar.

    En Access 2007, haga clic en
    Procedimiento almacenado en el grupo
    Otro.
  4. Escriba las instrucciones Transact-SQL siguientes en la ventana Procedimiento almacenado:
    Create Procedure "QBFProc"
    @CustomerID varchar(10), @EmployeeID int, @OrderDate datetime
    As
    Declare @SQLSTRING varchar(1000)
    Declare @SelectList varchar(1000)

    SET NOCOUNT ON

    SELECT @SelectList = 'SELECT * FROM Orders'

    --Check to see if CustomerID search criteria is NULL.
    --If it contains a value, Begin to construct a WHERE clause.
    IF @CustomerID Is NOT NULL
    BEGIN
    SELECT @SQLString = 'WHERE CustomerID = ''' + @CustomerID + ''''
    END

    --Check to see if EmployeeID search criteria is NULL.
    --If it contains a value, add additional information to the WHERE clause.
    IF @EmployeeID Is NOT NULL
    BEGIN
    IF @SQLSTRING Is NOT NULL
    BEGIN
    SELECT @SQLSTRING = @SQLSTRING + ' AND EmployeeID = ' + Convert(varchar(100), @EmployeeID)
    END
    ELSE
    BEGIN
    SELECT @SQLSTRING = 'WHERE EmployeeID = ' + Convert(varchar(100), @EmployeeID)
    END
    END

    --Check to see if OrderDate search criteria is NULL.
    --If it contains a value, add additional information to the WHERE clause.
    IF @OrderDate Is NOT NULL
    BEGIN
    IF @SQLSTRING Is NOT NULL
    BEGIN
    SELECT @SQLSTRING = @SQLSTRING + ' AND OrderDate = ''' + Convert(varchar(20), @OrderDate) + ''''
    END
    ELSE
    BEGIN
    SELECT @SQLSTRING = 'WHERE OrderDate = ''' + Convert(varchar(20), @OrderDate) + ''''
    END
    END

    --Concatenate the SELECT and the WHERE clause together
    --unless all three parameters are null in which case return
    --@SelectList by itself without criteria.
    IF @CustomerID IS NULL AND @EmployeeID IS NULL AND @OrderDate IS NULL
    BEGIN
    SELECT @SelectList = @SelectList
    END
    ELSE
    BEGIN
    SELECT @SelectList = @SelectList + ' ' + @SQLSTRING
    END

    --Execute the SQL statement.
    EXECUTE(@SELECTLIST)
  5. Guarde el procedimiento almacenado con el nombre predeterminado de QBFProc y cierre el procedimiento.

Crear el formulario de consulta

Siga estos pasos para crear el formulario QBF_Form, que utilizará para elegir el criterio de búsqueda utilizado por el procedimiento almacenado.
  1. Cree un formulario nuevo que no se base en ninguna tabla o consulta y asígnele el nombre QBF_Form.
  2. En Access 2003 o en Access 2002, asegúrese de que el botón
    Asistentes para controles no esté presionado en el cuadro de herramientas. En Access 2007, asegúrese de que el botón Usar Asistentes para controles no esté presionado en el grupo
    Controles. A continuación, agregue tres cuadros combinados al formulario con las asignaciones de propiedades siguientes:

    Cuadro combinado:
    Nombre: cboCusID
    Tipo de origen de la fila: Table/View/StoredProc
    Origen de la fila: SELECT CustomerID FROM Customers

    Cuadro combinado:
    Nombre: cboEmpID
    Tipo de origen de la fila: Table/View/StoredProc
    Origen de la fila: SELECT EmployeeID, LastName FROM Employees
    Número de columnas: 2
    Ancho de columnas: 0;1
    Columna dependiente: 1

    Cuadro combinado:
    Nombre: cboOrder
    Tipo de origen de la fila: Table/View/StoredProc
    Origen de la fila: SELECT OrderDate FROM Orders
  3. Agregue un botón de comando al formulario con las asignaciones de propiedades siguientes:

    Nombre: cmdOpenFinal
    Título: Abrir formulario
    Al hacer clic en: [Procedimiento de evento]
  4. Haga clic en el botón Generar (...) situado a la derecha de [Procedimiento de evento] y configure el procedimiento de la manera siguiente:
    Private Sub cmdOpenFinal_Click()
    DoCmd.OpenForm "frmFinal", acFormDS
    End Sub
  5. Guarde y cierra el formulario, asegurándose de guardarlo como QBF_Form.

Crear el formulario para mostrar los resultados

Siga estos pasos para crear el formulario frmFinal, que mostrará los resultados del procedimiento almacenado basándose en los criterios especificados en QBF_Form.
  1. En Access 2003 o en Access 2002, haga clic en
    Consultas bajo Objetos en la ventana Base de datos y, a continuación, haga clic en el procedimiento almacenado
    QBFProc para que tenga el enfoque.

    En Access 2007, haga clic en el grupo Formularios en el panel de exploración y, a continuación, haga clic en el procedimiento almacenado QBFProc para que tenga el enfoque.
  2. En Access 2003 o en Access 2002, haga clic en
    Autoformulario en el menú
    Insertar.

    En Access 2007, haga clic en la ficha
    Crear y, a continuación, haga clic en
    Formulario en el grupo
    Formularios.
  3. Cuando se le pida que escriba un parámetro, haga clic en Cancelar.
  4. Guarde el formulario recién creado como frmFinal.
  5. Establezca la propiedad ParámetrosEntrada de este formulario a:

    @CustomerID varchar(10) = Forms!QBF_Form!cboCusID, @EmployeeID int =
    Forms!QBF_Form!cboEmpID, @OrderDate datetime = Forms!QBF_Form!cboOrder
  6. Guarde y cierre el formulario frmFinal.
Para utilizar el ejemplo recién creado, abra el formulario QBF_Form y seleccione valores en algunos o en todos los cuadros combinados. Haga clic en el botón de comando para abrir el formulario frmFinal, que mostrará los registros coincidentes que cumplen los criterios seleccionados en el formulario QBF_Form.

Referencias


Para obtener información adicional acerca de QBF en una base de datos de Access, haga clic en el número de artículo siguiente para verlo en Microsoft Knowledge Base:
209645 ACC2000: Cómo utilizar la técnica de formulario de consulta (QBF)

Para obtener información adicional acerca de Transact-SQL (TSQL) y la creación de procedimientos almacenados con parámetros de entrada, visite el siguiente sitio web de Microsoft: