Cuatro formas de ir a un registro desde una selección de un cuadro combinado

Moderado: requiere conocimientos básicos de macros, código e interoperabilidad.

Este artículo se refiere a un archivo de base de datos de Microsoft Access .mdb o .accdb.Para obtener una versión de este artículo para Microsoft Access 2000, vea
209537.

En este artículo se muestran cuatro métodos para mover un registro específico según 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 requiera la propiedad Filter de un formulario.

  • Use un formulario o subformulario, con un cuadro combinado en el formulario principal y los datos en el subformulario, enlazados por las propiedades LinkMasterFields y LinkChildFields del control del subformulario.

  • Base el formulario en una consulta que una dos tablas y use después la técnica de búsqueda automática para enlazar un cuadro combinado al campo que controla la combinación.

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

Microsoft proporciona ejemplos de programación con fines ilustrativos únicamente, sin ninguna garantía tanto expresa como implícita. Esto incluye, entre otras, las garantías implícitas de comerciabilidad e idoneidad para un fin determinado. En este artículo se da por supuesto que ya conoce el lenguaje de programación que se muestra, así como las herramientas empleadas para crear y depurar procedimientos. Los ingenieros de soporte técnico de Microsoft pueden explicarle la funcionalidad de un determinado procedimiento, pero no modificarán estos ejemplos para ofrecer mayor funcionalidad ni crearán procedimientos adaptados a sus necesidades específicas.
PRECAUCIÓN: si sigue los pasos de este ejemplo, modificará la base de datos de ejemplo Neptuno.mdb. Quizás desee hacer copia de seguridad del archivo Neptuno.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:
Número de método: 1 2 3 4
------------------------------------------------
No requieren macros o código x x
Guarda en subformularios x x x
Puede desplazar a otros reg. x x x
No requiere una consulta x x x
Puede modificar registros x x x
Nota: estos métodos también se pueden aplicar a los cuadros de texto.

  1. Use el asistente AutoForm: Columnar para crear un formulario nuevo que se base en la tabla Products y luego guarde el formulario como frmComboTest.

    Para hacer esto en Microsoft Office Access 2003 y en las versiones anteriores de Access, siga estos pasos:

    1. En la ventana Base de datos, haga clic en
      Formularios bajo 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 AutoForm: Columnar, seleccione Products en la lista desplegable y haga clic en
      Aceptar.

    4. Guarde el formulario como frmComboTest.

    Para hacer esto en Microsoft Office Access 2007, siga estos pasos:

    1. En la ficha 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 Products 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 con el fin de agregar un cuadro combinado no enlazado. 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é seleccionada la opción Asistentes para controles.

      Nota: en Access 2007, asegúrese de que esté seleccionada la opción
      Asistentes para controles en el grupo
      Controles en 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, 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 cuadros combinados 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 basado en el valor que seleccione en mi cuadro combinado y, a continuación, haga clic en Siguiente.

    5. Incluya los campos ProductID y
      ProductName, y 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.


    Observe que cuando elija un nombre de producto en el cuadro combinado, se le pasa al registro correspondiente al producto que seleccionó.

  1. Use el asistente AutoForm: Columnar para crear un formulario nuevo que se base en la tabla Products y luego 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 para el formulario
    frmComboTest2, establezca la propiedad Filteren la ficha Datos como sigue:

    [ProductName] = Forms![frmComboTest2]![cboLookup]

  3. Agregue un cuadro combinado sin enlazar denominado cboLookup y establezca las propiedades del control como se indica a continuación:
    Combo Box
    -----------------------------------------------------
    ControlName: cboLookup
    ControlSource: <dejar en blanco>
    RowSourceType: Tabla/Consulta
    RowSource: Select [ProductName] from Products;
    BoundColumn: 1
    ColumnWidths: 1"
    AfterUpdate: mcrLocateProduct

  4. Cree la macro siguiente denominada mcrLocateProduct:
    Action
    --------------------------------------
    SetValue
    Requery

    mcrLocateProduct Actions
    --------------------------------------
    SetValue
    Item: Forms![frmComboTest2].FilterOn
    Expression: True
    Observe que cuando abre el formulario frmComboTest2 y selecciona un nombre de producto desde el cuadro combinado cboLookup, el filtro se establece en ese valor.

  1. Cree un formulario nuevo que no se base en ninguna tabla o consulta, y guárdelo como frmMain. Después, agregue un cuadro combinado y establezca sus propiedades de la forma siguiente:
    Combo Box
    ----------------------------
    ControlName: cboLookup
    ControlSource: <dejar en blanco>
    RowSourceType: Table/Query
    RowSource: Products
    ColumnCount: 4
    ColumnWidths: 0";2"
    BoundColumn: 1

  2. Use el asistente AutoForm: tabular para crear un segundo formulario que se base en la tabla Products, establezca la propiedad
    DefaultView del formulario en Single Form y, 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 de control del subformulario como se indica a continuación:
    Subform
    ----------------------------
    LinkChildFields: [ProductID]
    LinkMasterFields: cboLookup
    Al cambiar el valor del control cboLookup, Access se asegura de que los registros del subformulario coinciden con el cuadro combinado.

    El formulario Orders de la base de datos de ejemplo Northwind.mdb (Neptuno.mdb) ilustra este método. El subformulario Order Details se relaciona con las propiedades LinkMasterFields y
    LinkChildFields.

  1. Cree una tabla denominada tblProductSelect que tenga un único campo: ProductID. Establezca la propiedad Data Type del campo en Number y la propiedad Field Size en Long Integer.

    Nota: no se necesita una clave principal. No agregue registros a esta tabla.

  2. Cree la consulta siguiente, denominada qryProductSelect, que se base en una unión entre los campos
    ProductID de las tablas tblProductSelect y Products. Incluya los siguientes atributos en la consulta:
    Consulta: qryProductSelect
    -----------------------------------------------
    Field: ProductID
    Table Name: tblProductSelect

    Campo: <cualquier otro campo que le interese>
    TableName: Productos

  3. Use el asistente AutoForm: Columnar para crear un formulario que se base en la consulta qryProductSelect y vea el formulario en la vista Formulario.

  4. Haga clic con el botón secundario del mouse en el control del cuadro de texto para el campo ProductID, seleccione
    Cambiar a, haga clic en Cuadro combinado y haga las asignaciones de propiedades siguientes 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 ejecútelo.

¿Necesita más ayuda?

Ampliar sus conocimientos
Explorar los cursos
Obtener nuevas características primero
Unirse a Microsoft Insider

¿Le ha sido útil esta información?

¡Gracias por sus comentarios!

×