Generar Informe Seleccionándolo de una Lista

Tengo una tabla, con su formulario, además tengo consultas e informes. Todo eso no me causa problema. Pero mi pregunta es la siguiente. Debido a la cantidad de informes que tengo -ya que debo combinar los datos de distintas maneras, orden alfabético, por fecha, por persona, por lugar, etc-, tengo unos 15 informes, y para informe tengo 15 botones en mi formulario.

Lo que quiero es un combo box, que tengo los nombre de los informes disponibles de esta tabla, unicamente, no los informes disponibles en todo la base de datos y que al seleccionarlo, genere el informe.

No ocupo filtros ni nada. Eso ya lo tengo resulto.

1 Respuesta

Respuesta
1

Puedes hacerlo de esta manera:

1º/ Coloca un campo combinado en tu formulario (yo lo llamaré cboInforme)

2º/ Saca las propiedades de este cuadro combinado y cambia, en la pestaña datos, el tipo de origen de la fila a "Lista de valores"

3º/ En la misma pestaña, en "origen de la fila", escribe, entre comillas y separados por punto y coma, los nombres de los informes que desees: "Informe1";"Informe2";...

4º/ Coloca un boton (lo llamaré cmdAbrirInforme), y el su evento "Al hacer click", le generas este código:

Private Sub cmdAbrirInform_Click()

If Nz(Me.cboInforme,"")="" Then

MsgBox "Tienes que seleccionar un informe",vbinformation+vbOkOnly,"ERROR"

Me.cboInforme.SetFocus

Else

DoCmd.OpenForm Me.cboInforme

End Sub

Si no quieres poner el botón, el código que te dí, se lo puedes poner en el evento "Después de actualizar" del cuadro combinado.

Gracias por la rápida respuesta.

Lo hice tal cual. Pero el botón simplemente no hace nada.

Mejor esa otra.

Pero paso  igual.

Disculpa, es DoCmd. OpenReport y no DoCmd. OpenForm

Tampoco.

Consulta, cuando dice que al combo box lo vas a llamar cboInforme, es que debo ponerle ese nombre en las propiedades, en la pestaña "Otras", en el campo "Nombre"?

¿Seria así?

Lo del nombre, es correcto lo que dices, pero no tienes que llamarlo así, puedes hacerlo como quieras, pero teniendo en cuenta que el nombre que tu tengas es el que tienes que usar en el código.

En cuanto a que no te va, me faltaba otra cosita en el código, que imagino que te provocará un error, y es que falta un "End If" antes del "End Sub".

Además, el código tal como te lo dí, lanza directamente el informe a la impresora predeterminada. Si lo quieres mostrar en pantalla, has de añadir lo que te pongo en negrita:

Private Sub cboInforme_AfterUpdate()
If Nz(Me.cboInforme, "") = "" Then
MsgBox "Tienes que seleccionar un informe", vbInformation + vbOKOnly, "ERROR"
Me.cboInforme.SetFocus
Else
DoCmd.OpenReport Me.cboInforme, acViewPreview
End If
End Sub

Te adjunto una BD de ejemplo, para que veas que sí funciona, y puedas comprobar si tienes algo distinto (es el formulario 01Abre Informes): https://dl.dropboxusercontent.com/u/59469930/Neptuno.mdb

Buenas, gracias por tu amabilidad.

Ya intente esto en mi Access y no funciona.

Incluso descargue tu archivo de ejamplo e igual no funciona.

Sera mi computadora, o mi Access,¿habrá que activar el uso de macros?

Men, que verguenza. Hize una revicion rapida y es verdad, no tenia activa las macros.

Dejame revisar todo bien y finalizo la consulta.

Listo. Mil Gracias.

Esta era la primera vez que usaba macros de código, ya que he usado pero de las otras, las que hay un asistente.

Ok, solucionado eso. Quedo perfecto. Pero, le hice un cambio.

Yo, a mis reportes les e puesto nombres que me ayudan a mi a saber de donde vienen y que hacen, pero para un usuario normal no tanto. Ejemplo: rp_salidas_por_fechas_pizarra

Entonces hice esto.

En "origen de la fila", escribe, entre comillas y separados por punto y coma, los nombres de los informes de forma que explique: Ejemplo: "Detallado por Fechas";"Total por Temas";...

Entonces coloque un If...Then...End If por cada uno.

If "Combo" = "Detallado por Fechas" Then

Muestra el informe que corresponde.

End If

Y así por cada uno de los informes.

Osea, me ayudaste totalmente, y yo le agregue algo más.

Mil gracias por tu tiempo.

Me alegra que vayas más allá de mi propuesta y que te haya funcionado.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas