Procedimiento para desplazarse a un registro específico desde una selección de un 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 habilidades básicas de macros, 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 cambiar 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 reconsulte 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 VincularCamposPrincipales y LinkChildFields del control de subformulario.
  • Base el formulario en una consulta que combine dos tablas y, a continuación, use la técnica de búsqueda automática para enlazar un cuadro combinado con el 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 explicarle la funcionalidad de un procedimiento en particular, pero no modificarán estos ejemplos para proporcionar una funcionalidad agregada ni crear procedimientos que se ajusten a sus necesidades específicas. PRECAUCIÓN: Si sigue los pasos de este ejemplo, modificará la base de datos de ejemplo Neptuno. 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.

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

Método 1 segundo 3 4
No requiere código/macros x x
Guarda en subformularios 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. Utilice el asistente Autoformulario: en columnas para crear un nuevo formulario basado en la tabla productos y, a continuación, guarde el formulario como frmComboTest.

    Para hacer esto 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: en columnas, seleccione productos en la lista desplegable y, a continuación, haga clic en Aceptar.
    4. Guarde el formulario como frmComboTest.

    Para hacer esto en Microsoft Office Access 2007 o en 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 los 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 en columnas 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 independiente. 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 esté seleccionado asistentes para controles .

      Nota: En Access 2007 o una versión posterior, asegúrese de que esté seleccionado asistentes para controles en el grupo controles en la ficha diseño .

    3. En la barra de herramientas, haga clic en cuadro combinadoy, 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 en 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 cuadros combinadosy, 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 el formulario según el valor que seleccionó en el 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 cuadros combinados 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. Vea el formulario frmComboTest en la vista formulario.

    Tenga en cuenta que cuando elige un nombre de producto en el cuadro combinado, se le mueve al registro del producto que ha seleccionado.

Método 2

  1. Use el asistente Autoformulario: en columnas para crear un nuevo formulario basado en la tabla productos y guarde 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 como se indica a continuación: [ProductName] = Forms! [frmComboTest2]! [cboLookup]

  3. Agregue un cuadro combinado independiente 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 llamada mcrLocateProduct:

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

    Tenga en cuenta que cuando abre el formulario frmComboTest2 y selecciona un nombre de producto en el cuadro combinado cboLookup , el filtro se establece en ese valor.

Método 3

  1. Cree un formulario nuevo 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. Utilice el asistente Autoformulario: tabular para crear un segundo formulario basado en la tabla productos, establezca la propiedad DefaultView del formulario en formulario simpley, a continuación, guarde el formulario como frmSub.

  3. Utilice 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 en el control cboLookup, Access garantiza que los registros del subformulario coinciden con el cuadro combinado.

    El formulario pedidos de la base de datos de ejemplo Neptuno ilustra este método. El subformulario detalles de pedidos está relacionado con las propiedades VincularCamposPrincipales y LinkChildFields .

Método 4

  1. Cree una tabla llamada 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 Autoformulario: columna para crear un formulario basado en la consulta qryProductSelect y, a continuación, vea 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 combinadoy, 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.