Cómo crear una consulta dinámica con valores a partir de un formulario de búsqueda en Access

Avanzado: requiere conocimientos expertos de codificación, interoperabilidad y multiusuario.

Este artículo se aplica a archivos de base de datos de Microsoft Access (.mdb o .accdb), o de proyecto de Microsoft Access (.adp).

Resumen

En este artículo se muestra cómo crear dinámicamente criterios para una cadena de consulta con valores de un formulario de búsqueda en Microsoft Access.

Más información

A veces, es posible que quiera crear un formulario que actúe como formulario de búsqueda. Quiere poder escribir valores en el formulario y compilar dinámicamente la cadena SQL adecuada. En los pasos siguientes se muestra cómo crear dinámicamente una cadena de consulta que usa el método BuildCriteria.

Microsoft proporciona ejemplos de programación con fines ilustrativos únicamente, sin ninguna garantía, ya sea expresa o implícita. Esto incluye, entre otras, las garantías implícitas de comerciabilidad e idoneidad para un fin determinado. Se considera que está familiarizado con el lenguaje de programación que se muestra y con las herramientas para crear y depurar procedimientos. Los ingenieros de soporte técnico de Microsoft pueden ayudar a explicar la funcionalidad de un procedimiento determinado, pero no modificarán estos ejemplos para proporcionar funcionalidad adicional ni construir procedimientos para satisfacer sus requisitos específicos. PRECAUCIÓN: Si sigue los pasos de este ejemplo, modificará la base de datos de ejemplo Northwind.mdb. Es posible que desee realizar una copia de seguridad del archivo Northwind.mdb y seguir estos pasos en una copia de la base de datos.

Ejemplo paso a paso

  1. Iniciar acceso.
  2. En el menú Ayuda , seleccione Bases de datos de ejemplo y, a continuación, haga clic en Base de datos de ejemplo northwind.
  3. Abra el formulario Clientes en la vista Diseño.
  4. Agregue un botón de comando y un cuadro de texto al formulario y, a continuación, establezca las siguientes propiedades:
 Command Button
 ------------------------
 Name: cmdSearch
 Caption: Search
 OnClick: Event Procedure

Text Box
 --------------
 Name: txtSQL
 Width: 4.4583"
 Height: 1.25"
  1. Establezca la propiedad OnClick del botón de comando en el siguiente procedimiento de evento:
Private Sub cmdSearch_Click()
    On Error Resume Next

Dim ctl As Control
    Dim sSQL As String
    Dim sWhereClause As String

'Initialize the Where Clause variable.
    sWhereClause = " Where "

'Start the first part of the select statement.
    sSQL = "select * from customers "

'Loop through each control on the form to get its value.
    For Each ctl In Me.Controls
        With ctl
            'The only Control you are using is the text box.
            'However, you can add as many types of controls as you want.
            Select Case .ControlType
                Case acTextBox
                    .SetFocus
                    'This is the function that actually builds
                    'the clause.
                    If sWhereClause = " Where " Then
                        sWhereClause = sWhereClause & BuildCriteria(.Name, dbtext, .Text)
                    Else
                        sWhereClause = sWhereClause & " and " & BuildCriteria(.Name, dbtext, .Text)
                    End If
            End Select
        End With
    Next ctl

'Set the forms recordsource equal to the new
    'select statement.
    Me.txtSQL = sSQL & sWhereClause
    Me.RecordSource = sSQL & sWhereClause
    Me.Requery

End Sub

  1. Guarde el formulario y ábralo en la vista Formulario.

    Tenga en cuenta que al hacer clic en el botón De comando Buscar , el cuadro de texto txtSQL refleja la consulta que se creó a partir de los valores del formulario Clientes. Además, se ha vuelto a consultar el formulario Clientes para que refleje los resultados de la nueva cadena SQL.

Referencias

Para obtener más información sobre el método BuildCriteria, en el Editor de Visual Basic, haga clic en Ayuda de Microsoft Visual Basic en el menú Ayuda, escriba método buildcriteria en el Asistente de Office o el Asistente para respuestas y, a continuación, haga clic en Buscar para ver el tema.