Autor Tema: Abrir reporte en primer plano  (Leído 351 veces)

Desconectado xavi

  • Administrador
  • Habitual
  • *****
  • Mensajes: 183
Abrir reporte en primer plano
« en: Noviembre 20, 2012, 01:50:31 pm »
Palabras clave: abrir, informe, reporte, primer, plano, modar, emergente
Autor: Búho / Agosto 2002
Extraído de: La web del Búho

Cita de: quien
Cuando abro un reporte en vista previa desde un formulario Modal o Emergente, éste se sitúa detrás del formulario y no puedo verle. ¿Como presento el reporte en pantalla, por delante del formulario?

Cita de: Búho
Esto sirve para meter un report en vista previa, llamado desde un formulario MODAL. Si se hace sin mas, el Report se queda en segundo plano y no se ve.
Búho Agosto 2002
Uso:
En vez de llamar al reporte de forma habitual, lo hacemos desde esta función. Es decir, desde cualquier formulario, que deseemos lanzar un 'reporte en vista previa, con formularios modales y para evitar que dicho 'reporte se quede 'detrás' y no se vea, deberemos llamar así: OpenReport("Mireporte", etc)

Y la funcion OpenReport que hace todo esto es:

Código: [Seleccionar]
Sub OpenReport(ReportName As String, Optional View As Integer, Optional _
    FilterName As String, Optional WhereCondition As String)
Dim loFormArray() As String
Dim loform As Form
Dim intCount As Integer
Dim intX As Integer
    For Each loform In Forms
        If loform.Visible Then
            ReDim Preserve loFormArray(intCount)
            loFormArray(intCount) = loform.Name
            loform.Visible = False
            intCount = intCount + 1
        End If
    Next
    DoCmd.OpenReport ReportName, View, FilterName, WhereCondition
    Do While IsVisible(acReport, ReportName): DoEvents: Loop
    For intX = intCount - 1 To 0 Step -1
        Forms(loFormArray(intX)).Visible = True
    Next
End Sub

Function IsVisible(intObjType As Integer, strObjName As String) As Boolean
Dim intObjState As Integer
    intObjState = SysCmd(acSysCmdGetObjectState, intObjType, strObjName)
    IsVisible = intObjState And acObjStateOpen
End Function