Cómo pasar a un registro específico desde una selección de cuadro combinado en Microsoft Access

Nota

Office 365 ProPlus pasa a llamarse Microsoft 365 Apps para empresas. Para obtener más información sobre este cambio, lea esta publicación de blog.

Moderado: requiere conocimientos básicos de macro, codificación e interoperabilidad.

Este artículo se aplica a un archivo de base de datos de Microsoft Access (.mdb) o a un archivo de base de datos de Microsoft Access (.accdb).

Resumen

En este artículo se muestran cuatro métodos para pasar a un registro específico en función de la selección de un cuadro combinado. Los métodos son los siguientes:

  • En el evento AfterUpdate de un cuadro combinado, ejecute código que use el método FindFirst.
  • En el evento AfterUpdate de un cuadro combinado, llame a una macro que vuelva a pedir la propiedad Filter de un formulario.
  • Use un formulario/subformulario, con un cuadro combinado en el formulario principal, y los datos del subformulario, enlazados por las propiedades LinkMasterFields y LinkChildFields del control de subformulario.
  • Base el formulario en una consulta que une dos tablas y, a continuación, use la técnica AutoLookup para enlazar un cuadro combinado al campo que controla la combinación.

Estos cuatro métodos se describen en la sección "Más información" de este artículo y se basan en la base de datos de ejemplo Northwind.

Más información

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 en particular, pero no modificarán estos ejemplos para proporcionar funcionalidad adicional o crear procedimientos para cumplir con sus requisitos específicos. PRECAUCIÓN: Si sigue los pasos de este ejemplo, modifique la base de datos de ejemplo Northwind.mdb. Es posible que desee hacer una copia de seguridad del archivo Northwind.mdb y seguir estos pasos en una copia de la base de datos.

En la tabla siguiente se comparan las características (ventajas e inconvenientes) de los cuatro métodos:

Método 1 2 3 4
No requiere código ni macros x x
Guarda en subformulario x x x
Puede desplazarse a otros registros x x x
No requiere una consulta x x x
Puede editar registros x x x

Nota Estos métodos también se pueden aplicar a cuadros de texto.

Método 1

  1. Use el Asistente para autoformulario: columnar para crear un nuevo formulario basado en la tabla Productos y, a continuación, guarde el formulario como frmComboTest.

    Para ello en Microsoft Office Access 2003 y versiones anteriores de Access, siga estos pasos:

    1. En la ventana Base de datos, haga clic en Formularios en Objetos.
    2. Haga clic en Nuevo en la barra de herramientas de la ventana Base de datos.
    3. En el cuadro de diálogo Nuevo formulario, haga clic en Autoformulario: Columnar, seleccione Productos en la lista desplegable y, a continuación, haga clic en Aceptar.
    4. Guarde el formulario como frmComboTest.

    Para ello en Microsoft Office Access 2007 o una versión posterior, siga estos pasos:

    1. En la pestaña Crear, haga clic en Más formularios en el grupo Formularios y, a continuación, haga clic en Asistente para formularios.
    2. En el cuadro de diálogo Nuevo formulario, haga clic en Asistente para formularios, seleccione productos en la lista desplegable y, a continuación, haga clic en Aceptar.
    3. En el cuadro de diálogo Asistente para formularios, seleccione los campos que desea ver en el nuevo formulario, seleccione la opción Columnar para establecer el diseño del formulario y, a continuación, haga clic en Finalizar.
    4. Guarde el formulario como frmComboTest.
  2. Use el Asistente para cuadros combinados para agregar un cuadro combinado sin enlazar. Para ello, siga estos pasos:

    1. Abra el formulario frmComboTest en la vista Diseño.

    2. En la barra de herramientas, asegúrese de que los Asistentes para control están seleccionados.

      Nota En Access 2007 o una versión posterior, asegúrese de que asistentes de control está seleccionado en el grupo Controles de la ficha Diseño.

    3. En la barra de herramientas, haga clic en Cuadro combinado y, a continuación, haga clic en el formulario frmComboTest.

      Nota En Access 2007 o una versión posterior, haga clic en Cuadro combinado en el grupo Controles de la ficha Diseño y, a continuación, haga clic en el formulario frmComboTest. En el cuadro de diálogo Elegir generador, haga clic en Asistente para cuadro combinado y, a continuación, haga clic en Aceptar.

    4. En el cuadro de diálogo Asistente para cuadros combinados, seleccione la opción Buscar un registro en mi formulario en función del valor que seleccioné en mi cuadro combinado y, a continuación, haga clic en Siguiente.

    5. Incluya los campos ProductID y ProductName y, a continuación, haga clic en Siguiente.

    6. Haga clic en Finalizar.

    El Asistente para cuadro combinado crea un procedimiento de evento similar al siguiente:

    Private Sub Combo0_AfterUpdate()
         ' Find the record that matches the control.
         Dim rs As Object
    
     Set rs = Me.Recordset.Clone
         rs.FindFirst "[ProductID] = " & Str(Nz(Me![Combo20], 0))
         If Not rs.EOF Then Me.Bookmark = rs.Bookmark
    End Sub
    
  3. Ver el formulario frmComboTest en la vista Formulario.

    Tenga en cuenta que al elegir un nombre de producto en el cuadro combinado, se le mueve al registro del producto que seleccionó.

Método 2

  1. Use el Asistente para autoformulario: columnar para crear un nuevo formulario basado en la tabla Productos y guardar el formulario como frmComboTest2.

    Nota Vea los pasos que se mencionan en el paso 1 del método 1.

  2. En la hoja de propiedades del formulario frmComboTest2, establezca la propiedad Filter en la ficha Datos de la siguiente manera:[ProductName] = Forms! [frmComboTest2]! [cboLookup]

  3. Agregue un cuadro combinado sin enlazar denominado cboLookup y, a continuación, establezca las propiedades del control de la siguiente manera:

    Combo Box
    -----------------------------------------------------
    ControlName: cboLookup
    ControlSource: <leave blank>
    RowSourceType: Table/Query
    RowSource: Select [ProductName] from Products;
    BoundColumn: 1
    ColumnWidths: 1"
    AfterUpdate: mcrLocateProduct
    
  4. Cree la siguiente macro denominada mcrLocateProduct:

    Action
    --------------------------------------
    SetValue
    Requery
    
    mcrLocateProduct Actions
    --------------------------------------
    SetValue
    Item: Forms![frmComboTest2].FilterOn
    Expression: True
    

    Observe que al abrir el formulario frmComboTest2 y seleccionar un nombre de producto en el cuadro combinado cboLookup, el filtro se establece en ese valor.

Método 3

  1. Cree un nuevo formulario que no se base en ninguna tabla o consulta y guárdelo como frmMain. A continuación, agregue un cuadro combinado y establezca sus propiedades de la siguiente manera:

    Combo Box
    ----------------------------
    ControlName: cboLookup
    ControlSource: <leave blank>
    RowSourceType: Table/Query
    RowSource: Products
    ColumnCount: 4
    ColumnWidths: 0";2"
    BoundColumn: 1
    
  2. Use el Asistente para autoformulario: tabular para crear un segundo formulario basado en la tabla Productos, establezca la propiedad DefaultView del formulario en Formulario único y, a continuación, guarde el formulario como frmSub.

  3. Use el formulario frmSub para crear un control de subformulario en el formulario frmMain.

  4. Establezca las propiedades del control de subformulario de la siguiente manera:

    Subform
    ----------------------------
    LinkChildFields: [ProductID]
    LinkMasterFields: cboLookup
    

    Al cambiar el valor del control cboLookup, Access garantiza que los registros del subformulario coincidan con el cuadro combinado.

    El formulario Pedidos de la base de datos de ejemplo Northwind ilustra este método. El subformulario Detalles del pedido está relacionado con las propiedades LinkMasterFields y LinkChildFields.

Método 4

  1. Cree una tabla denominada tblProductSelect que tenga un solo campo, ProductID. Establezca la propiedad Tipo de datos del campo en Número y establezca la propiedad Tamaño del campo en Entero largo.

    Nota No es necesaria una clave principal. No agregue registros a esta tabla.

  2. Cree la siguiente consulta denominada qryProductSelect que se basa en una combinación entre los campos ProductID de las tablas tblProductSelect y Products. Incluya los siguientes atributos en la consulta:

    Query: qryProductSelect
    -----------------------------------------------
    Field: ProductID
    Table Name: tblProductSelect
    
    Field: <any other fields you are interested in>
    TableName: Products
    
  3. Use el Asistente para autoformulario: columnas para crear un formulario basado en la consulta qryProductSelect y, a continuación, ver el formulario en la vista Formulario.

  4. Haga clic con el botón secundario en el control de cuadro de texto para el campo ProductID, elija Cambiar a , haga clic en Cuadro combinado y, a continuación, realice las siguientes asignaciones de propiedades para este cuadro combinado:

    Combo Box
    --------------------------
    ControlName: ProductID
    ControlSource: ProductID
    RowSourceType: Table/Query
    RowSource: Products
    ColumnCount: 1
    ColumnWidths: 2"
    BoundColumn: 1
    
  5. Guarde el formulario como frmComboTest3 y, a continuación, ejecute el formulario.