Calcular varios valores en una función y llamar a algunos de ellos desde formulario
En mi base de datos tengo varios formularios que recopilan información de otro programa externo, siempre de la misma manera.
El proceso es idéntico independientemente del formulario en el que se haga, simplemente en función del formulario solo necesito usar una parte de esos datos que recoge.
Hasta ahora escribía una Sub en cada formulario donde me recogía unicamente los datos necesarios en el mismo, pero por reducir código repetido me pregunto si es posible crear una función en un modulo que me recoja todos los datos posibles que puedo necesitar.
La idea seria llamar a la función desde el formulario, la cual me copiaría todos los datos del programa externo y después copiar tan solo los valores que necesite en el formulario
La función seria algo así
Function Nueva_Muestra(CodigoBarras) Set SapGuiAuto = GetObject("SAPGUI") 'Get the SAP GUI Scripting object Set SAPApp = SapGuiAuto.GetScriptingEngine 'Get the currently running SAP GUI Set SAPCon = SAPApp.Children(0) 'Get the first system that is currently connected Set session = SAPCon.Children(0) 'Get the first session (window) on that connection session.StartTransaction "QA03" 'Esta es la transacción que utiliza para sacar los datos. Quedará siempre una ventana abierta con ella. session.findById("wnd[0]/usr/ctxtQALS-PRUEFLOS").Text = CodigoBarras session.findById("wnd[0]").sendVKey 0 'Estos son los datos que copiamos fnIDH = session.findById("wnd[0]/usr/subLOT_HEADER:SAPLQPL1:1102/ctxtQALS-MATNR").Text fnLote_Inspeccion = session.findById("wnd[0]/usr/subLOT_HEADER:SAPLQPL1:1102/ctxtQALS-PRUEFLOS").Text fnLote = session.findById("wnd[0]/usr/subLOT_HEADER:SAPLQPL1:1102/ctxtQALS-CHARG").Text fnNombre_Material = session.findById("wnd[0]/usr/subLOT_HEADER:SAPLQPL1:1102/txtQALS-KTEXTMAT").Text 'fnCantidad = etc... End Function
Y despues crear una Sub en el formulario del estilo a esto:
Private Sub Codigo_Barras_AfterUpdate() vCodigoBarras = Nz(Me.Codigo_Barras, "") If vCogidoBarras = "" Then Exit Sub Nueva_Muestra (vCodigoBarras) Me.IDH = Nueva_Muestra.fnIDH Me.Nombre_Material = Nueva_Muestra.fnNombre_Material Me.Lote = Nueva_Muestra.fnLote Me.Lote_Inspeccion = Nueva_Muestra.fnLote_Inspeccion End Sub
De esta manera simplemente copio en los campos del formulario los valores que me interesan sin tener que copiar el codigo del script que paso por el programa externo cada vez.
De la forma en que presento el código en el formulario no funciona, pero desconozco si es porque no lo estoy escribiendo correctamente o si mi planteamiento es erróneo de base.
Cualquier ayuda es enormemente agradecida.