ACCESSoTOTAL / Dudas

En este repositorio resolvemos tus dudas sobre los proyectos que estás realizando en Access y VBA
1 stars 1 forks source link

¿Qué utilidad tiene trabajar con userForms en Access? #3

Closed lunasoft2001 closed 2 years ago

lunasoft2001 commented 2 years ago

Descripción del problema:

Hace unos días alguien me pregunto si se podían usar userForms en Access. "SÍ , por supuesto", respondí. Luego me quedé pensando para qué sería útil usarlos en Access. De momento se me ocurre para poder mostrar la ventana fuera del entorno de Access.

Por ejemplo: TPV con 2 pantallas una para el trabajador, la segunda para el cliente donde puede ver la lista de los productos comprados.

¿Qué opinais? ¿Se os ocurren otros usos? ¿Afrontaríais el problema del uso del segundo monitor de otro modo?

JesusTecsys commented 2 years ago

Hola Juanjo, Siempre puedes mantener un formulario colocado dónde quieras con el Me.Move.

Otra opción es abrir por automatización una segunda aplicación Access, que colocas dónde quieras -para ello están las opciones de colocar una ventana en güindous- y muestras en ella lo que quieras. Una opción muuuuu simple.

Un saludo.

lunasoft2001 commented 2 years ago

Y con el me.move se puede salir del Espacio de trabajo de Access?

Me quedo con la tarea pendiente de ojear las opciones de colocar una ventyana en "güidous" com tú dices. No lo he tocado nunca.

Muchas gracias por la ayuda @JesusTecsys

JesusTecsys commented 2 years ago

Si que puede poner dónde quieras ... pero recuerda poner el formulario a emergente = Si.

lunasoft2001 commented 2 years ago

Código para maximizar Access Cortesía de @JesusTecsys

En un módulo independiente

Option Compare Database
Option Explicit

' Fuente: Jesús Mansilla

'NOTE: The following "Declare" statement is case sensitive.

Declare Sub SetWindowPos Lib "user32" (ByVal hwnd&, _
                           ByVal hWndInsertAfter&, _
                           ByVal X&, ByVal Y&, ByVal cX&, _
                           ByVal cY&, ByVal wFlags&)

'Moves MS Access window to top of Z-order.
Global Const HWND_TOP = 0

'Values for wFlags.
Global Const SWP_NOZORDER = &H4      'Ignores the hWndInsertAfter.

Public Declare Function GetSystemMetrics _
            Lib "user32" ( _
            ByVal nIndex As Long) _
            As Long

Function SizeAccess(cX As Long, cY As Long, _
  cHeight As Long, cWidth As Long)

   Dim h As Long
   'Get handle to Microsoft Access.
   h = Application.hWndAccessApp

   'Position Microsoft Access.
   SetWindowPos h, HWND_TOP, cX, cY, cWidth, _
   cHeight, SWP_NOZORDER

End Function

Public Function PantallaX() As Long
    PantallaX = GetSystemMetrics(0)
End Function

Public Function PantallaY() As Long
    PantallaY = GetSystemMetrics(1)
End Function

Para llamarlo usar:

Call SizeAccess(-PantallaX, 0, PantallaY, PantallaX)

siendo pantallaX y pantallaY los pixels de la resolución del monitor