Access: Inputbox con Cuadro combinado

Quiero crear un cuadro de mensaje con un Cuadro combinado que me de una lista de posibles elecciones. Creo que no es posible a través de los cuadros de mensaje, así que me he creado un formulario modal con el combo de posibles opciones.

El problema que me surge es que al abrir el formulario modal, el código continua sin esperar a que selecciones la opción deseada.

El código lo he colocado en un campo del formulario principal, dependiendo del valor asignado en ese campo, debe llamar al formulario modal denominado "InputBox-PackInicio", en este formulario pretendo dar un valor a una variable pública denominada "Respuesta_InputBox_PackInicio". Si este valor no es nulo, debe ejecutar una SQL tomando ese valor en la clausula WHERE.

Private Sub Tipo_Albaran_AfterUpdate()
If Me![Tipo_Albaran] = "Albarán Pack Inicio" Then
    Dim Respuesta As String
    Respuesta = MsgBox("¿Deseas añadir los elementos del Pack Inicial?", 36, "Atención")
    If Respuesta = vbYes Then
        DoCmd.OpenForm ("InputBox-PackInicio")
        If Not IsNull(Respuesta_InputBox_PackInicio) Then
            DoCmd.SetWarnings False 'Desactiva el mensaje de ACCESS de que se van a agregar registros
            DoCmd.RunSQL "INSERT INTO Articulos_Venta ([Año Albaran], SerieAlbaran, NumeroAlbaran, [Referencia Articulo], Cantidad, [Precio Venta], [Total Articulo]) SELECT [Forms]![Formulario Ventas-Ingresos]![Subformulario Albaranes].[form]![año] AS Expr1, [Forms]![Formulario Ventas-Ingresos]![Subformulario Albaranes].[form]![Serie_Albaran] AS Expr2, [Forms]![Formulario Ventas-Ingresos]![Subformulario Albaranes].[form]![Id_Albaran] AS Expr3, Composicion_Articulos.Id_Elemento, Composicion_Articulos.Cantidad, Articulos.[Precio Venta], [Cantidad]*[Precio Venta] AS Expr4 FROM Composicion_Articulos INNER JOIN Articulos ON Composicion_Articulos.Id_Elemento = Articulos.Referencia;"
            DoCmd.SetWarnings True  'Vuelve a activar los mensajes
            Me![Subformulario_Articulos_Venta].Form.Recalc
            Dim Respuesta_Total_Albaran As String
            Respuesta_Total_Albaran = InputBox("¡Introduce el Importe Total del Pack Inicio!", 36, "300")
            Me![Precio Productos] = Respuesta_Total_Albaran
            Me![Total Albaran] = Respuesta_Total_Albaran + Me![Portes]
        Else
        End If
    Else
        Me![Tipo_Albaran] = "Albarán Normal"
    End If
Else
End If
End Sub

¿Como puedo probocar que el código espere a ese valor y no continúe ejecutándose?

1 Respuesta

Respuesta
1

Te pongo un ejemplo simple, y no creo que tengas problemas para adaptarlo.

1.- Créate un módulo estándard, llamémosle mdlVariables. Bajo las lineas "Option" declaras una variable pública, así:

Public p_espero as boolean

2.- Supongamos que tengo un form FPpal con un botón de comando. Ese botón tiene que lanzar un mensaje, pero solo lo lanzará cuando el usuario haya pulsado un botón en otro formulario FSecund. En consecuencia, en FPpal añades un botón de comando y en FSecund añades otro botón de comando.

3.- En el código "Al hacer clic" del botón en FPpal escribes el siguiente código.

...

Private Sub...

msgbox "Ahora abro FSecund. Solo tengo que pulsar el botón",vbinformation,"AVISO"

docmd.openform "FSecund"

p_espero=true

do while p_espero=true

doevents

loop

msgbox "Has cerrado FSecund",vbinformation, "AVISO"

End sub

....

Y en el botón de FSecund le asignas el siguiente código:

...

Private sub...

msgbox "Ahora me cerraré",vbindormation, "AVISO"

docmd.close acform, me.name

p_espero=false

End sub

...

Si entiendes esta mecánica la puedes aplicar en cualquier parte de tus códigos.

Un saludo,

Neckkito - Access MVP

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas