none
¿Como se "esconde" la ventana de Access? RRS feed

  • Pregunta

  • Hola, buenos dias a tod@s.

    En un proyecto Access, por un lado tengo un una base donde estan las Tablas Originales y por otro lado otra base donde esta el resto, o sea formularios, informes, consultas y los vinculos a las tablas originales. Esto lo he hecho asi para poder realizar actualizaciones sin perjudicar a las tablas, no se si es la mejor forma pero es la que conozco.

    El problema que tengo es que una vez compilados los dos por separado, y puesto el Runtime en el ordenador donde se utilizara, al abrir el programa se abre tambien el Access de las tablas originales, no se ven las tablas pero si se ve el access.

    Lo he probado con Acces 2007 y 2010 y me ocurre lo mismo.

    Mi pregunta es que ¿como puedo hacer para que no aparezca el Access que contiene las tablas originales al abrir el programa? O sea que solo se vea mi menu principal y ni se note que hay un acces detras.

    He visto y probado ejemplos pero la ventana de Access sigue ahi.

    En fin, si alguien tiene algun ejemplo o sugerencia se lo agradezco por adelantado.

    martes, 11 de diciembre de 2012 12:23

Respuestas

  • Muchas gracias por la aportacion pero con paciencia y buscando por ahi he encontrado esta solucion que no esta nada mal, sigue viendose como se abre Access pero se esconde al momento.

    Esta linea hay que colocarla en el formulario que abre el programa.

    fAccessWindow "Hide", False, False

    Y esta otra parte hay que colocarla en un modulo y listo, efecto conseguido.

    Private Declare Function IsWindowVisible Lib "user32" (ByVal hwnd As Long) As Long
    
       Dim dwReturn As Long
    
       Const SW_HIDE = 0
       Const SW_SHOWNORMAL = 1
       Const SW_SHOWMINIMIZED = 2
       Const SW_SHOWMAXIMIZED = 3
    
       Private Declare Function ShowWindow Lib "user32" (ByVal hwnd As Long, _
         ByVal nCmdShow As Long) As Long
        
        
    Public Function fAccessWindow(Optional Procedure As String, Optional SwitchStatus As Boolean, Optional StatusCheck As Boolean) As Boolean
    
       If Procedure = "Hide" Then
           dwReturn = ShowWindow(Application.hWndAccessApp, SW_HIDE)
       End If
    
       If Procedure = "Show" Then
           dwReturn = ShowWindow(Application.hWndAccessApp, SW_SHOWMAXIMIZED)
       End If
       
       If Procedure = "Minimize" Then
           dwReturn = ShowWindow(Application.hWndAccessApp, SW_SHOWMINIMIZED)
       End If
       
       If SwitchStatus = True Then
           If IsWindowVisible(hWndAccessApp) = 1 Then
               dwReturn = ShowWindow(Application.hWndAccessApp, SW_HIDE)
            Else
               dwReturn = ShowWindow(Application.hWndAccessApp, SW_SHOWMAXIMIZED)
           End If
       End If
       
       If StatusCheck = True Then
           If IsWindowVisible(hWndAccessApp) = 0 Then fAccessWindow = False
               
           If IsWindowVisible(hWndAccessApp) = 1 Then fAccessWindow = True
    
       End If
       
    End Function
    

    • Marcado como respuesta JM_cat sábado, 15 de diciembre de 2012 22:29
    sábado, 15 de diciembre de 2012 22:29

Todas las respuestas

  • Hola!

    si el "back end" (es decir la base de datos de tablas) se abre será porque tu de algún modo lo haces, no tiene porque abrirse por si solo.

    Por cierto que, a menos que contenga código, no hay necesidad de compilarlo.


    Saludos a todos desde Huelva
    http://www.mvp-access.es/emilio/

    martes, 11 de diciembre de 2012 16:54
  • Hola, buenos dias.

    Cierto, observando mejor he visto que quien realmente abre el Access es el programa principal, lo que ya no se es el porque ya que en ningun sitio he puesto codigo para que eso ocurra "queriendo" y mucho menos como evitarlo.

    Entre otras cosas lo he intentado con este codigo puesto en "al cargar" del FRM que se abre al inicio del programa, pero no hace nada.

    DoCmd.SelectObject acTable, , True
    DoCmd.RunCommand acCmdWindowHide

    ¿Alguna sugerencia?

    Gracias

    miércoles, 12 de diciembre de 2012 13:00
  • Pues lo siento, pero con la información que tengo no puedo decirte nada mas que lo ya dicho

    Saludos a todos desde Huelva
    http://www.mvp-access.es/emilio/

    miércoles, 12 de diciembre de 2012 17:07
  • Hola

    Mira a ver sí esto te ayuda:

    http://www.access-programmers.co.uk/forums/showthread.php?t=118483

    Salu2,


    José Mª Fueyo [MS MVP Access]

    jueves, 13 de diciembre de 2012 9:10
  • Muchas gracias por la aportacion pero con paciencia y buscando por ahi he encontrado esta solucion que no esta nada mal, sigue viendose como se abre Access pero se esconde al momento.

    Esta linea hay que colocarla en el formulario que abre el programa.

    fAccessWindow "Hide", False, False

    Y esta otra parte hay que colocarla en un modulo y listo, efecto conseguido.

    Private Declare Function IsWindowVisible Lib "user32" (ByVal hwnd As Long) As Long
    
       Dim dwReturn As Long
    
       Const SW_HIDE = 0
       Const SW_SHOWNORMAL = 1
       Const SW_SHOWMINIMIZED = 2
       Const SW_SHOWMAXIMIZED = 3
    
       Private Declare Function ShowWindow Lib "user32" (ByVal hwnd As Long, _
         ByVal nCmdShow As Long) As Long
        
        
    Public Function fAccessWindow(Optional Procedure As String, Optional SwitchStatus As Boolean, Optional StatusCheck As Boolean) As Boolean
    
       If Procedure = "Hide" Then
           dwReturn = ShowWindow(Application.hWndAccessApp, SW_HIDE)
       End If
    
       If Procedure = "Show" Then
           dwReturn = ShowWindow(Application.hWndAccessApp, SW_SHOWMAXIMIZED)
       End If
       
       If Procedure = "Minimize" Then
           dwReturn = ShowWindow(Application.hWndAccessApp, SW_SHOWMINIMIZED)
       End If
       
       If SwitchStatus = True Then
           If IsWindowVisible(hWndAccessApp) = 1 Then
               dwReturn = ShowWindow(Application.hWndAccessApp, SW_HIDE)
            Else
               dwReturn = ShowWindow(Application.hWndAccessApp, SW_SHOWMAXIMIZED)
           End If
       End If
       
       If StatusCheck = True Then
           If IsWindowVisible(hWndAccessApp) = 0 Then fAccessWindow = False
               
           If IsWindowVisible(hWndAccessApp) = 1 Then fAccessWindow = True
    
       End If
       
    End Function
    

    • Marcado como respuesta JM_cat sábado, 15 de diciembre de 2012 22:29
    sábado, 15 de diciembre de 2012 22:29