Access & VBA FAQ
| | | |
Indice de temas
Tablas
Consultas
Formularios
Informes
Macros
Módulos
Base de datos
Miscelánea
API
Utilidades
Problemas
Cadenas
Fechas
Todos los temas
Formularios : Seleccionar registros en un cuadro de lista para visualizarlos en un informe
Autor/es:
Juan M Afán de Ribera
Pregunta : ¿Cómo puedo decirle a un informe que me muestre sólo los registros que previamente he seleccionado en un cuadro de lista que tiene la propiedad Selección múltiple activada?
Respuesta : Para hacer eso que pides puedes hacerlo de varias maneras. Yo te propongo una bastante simple:

Construye una variable con los diferentes valores que servirán como criterio para filtrar los registros del informe, y luego pásaselos a la instrucción DoCmd.OpenReport, en el argumento [WhereCondition], dentro de una cláusula IN. Esta cláusula IN admite múltiples valores separados por comas como criterio.

En la sección Ejemplos podrás bajarte una base de muestra con un formulario y un informe que muestran los pedidos y detalles de pedido de la base Neptuno, pero pego aquí el trozo de código que hace lo que necesitamos. Verás que no es demasiado complejo:
Dim NumerosPedidos As String
Dim ElementoSeleccionado As Variant

    ' formamos una cadena con los números de pedidos seleccionados en el
    ' cuadro de lista y separados por comas (en este caso, sería algo
    ' como "10248,10249,10250,...")
    For Each ElementoSeleccionado In Me.lstPedidos.ItemsSelected
        NumerosPedidos = NumerosPedidos & Me.lstPedidos.ItemData(ElementoSeleccionado) & ","
    Next
    ' si había algún pedido seleccionado
    If Len(NumerosPedidos) > 0 Then
        ' quitamos la última coma de la cadena
        NumerosPedidos = Left(NumerosPedidos, Len(NumerosPedidos) - 1)
        ' y abrimos el informe en vista previa para visualizar los pedidos seleccionados
        DoCmd.OpenReport "Pedidos", acViewPreview, , "IdPedido IN(" & NumerosPedidos & ")"
    Else
        ' no se ha seleccionado ningún elemento del cuadro de lista
        MsgBox "Por favor, selecciona algún pedido"
    End If

Ejemplos:

seleccionmultiple

 

Temas relacionados:

 

Última actualización: 26/2/2006