Forma correcta de capturar datos de un formulario, desde otro VBA.

Ejemplo: FormularioX tiene un botón que abre el formularioY luego que halla cerrado el formularioY quiero saber que datos se ingresaron en el formularioY.

Lo que yo normalmente hago es crear una variable publica en un modulo, luego llamar el formulario POR desde el código del formulario Y, y poner en el código del formulario Y que mande la información necesaria a las variables publicas del modulo que he creado, y luego pasar la información del modulo al código de el formulario Y.

Esto aveces me funciona pero entenderán que es muy trabajoso y aveces me resulta con muchos errores, y limita el numero de nombres variables al tener tantas variables publicas, lo que quiero saber es la forma correcta de como comunicarme directamente de formulario a formulario, sin intermediarios. Parece ser que al cerrar uno los datos de las variables se pierden, se que es una estructura sencilla pero no se como hacerlo correctamente.

2 respuestas

Respuesta
2

Cristian: Esta pregunta me sale sugerida y me cuesta entender tu proceso.

¿Los datos del Form Y son un Complemento del X?

¿El Form Y tiene Origen de Datos?. ¿Por qué no los guardas en una tabla. Temporal o no?

Si puedes complementar de forma breve que proceso tienes, posiblemente te pueda ayudar pero sin entenderlo, poco puedo decirte. Un saludo >> Jacinto

Respuesta
1

Honestamente, no he entendido la pregunta. En el formulario Y ¿es un único registro o son varios? ¿Son muchos campos o pocos? ¿Cómo y donde quieres verlo?

Por ejemplo, supongamos que tengo una tabla Aux, más o menos de esta forma

Con ella he creado un formulario. Desde otro formulario, que en tu caso sería el formulario X, al que he añadido dos botones(que no harían falta).

Si pulso Abrir

Anoto lo que sea, lo cierro y si luego pulso el botón Saber

Pero como te decía habría que responder a las preguntas de arriba.

El código del botón Abrir es

Private Sub Abrir_Click()
DoCmd.OpenForm "aux", , , , acFormAdd, acDialog
End Sub

y el código del botón Saber es

Private Sub Saber_Click()
Dim s As String, p As String, q As String
s = DLast("uncampo", "aux")
p = DLast("otrocampo", "aux")
q = DLast("loquesea", "aux")
MsgBox "Has puesto como UnCampo " & "" & s & "" & ", como OtroCampo " & "" & p & "" & " y como LoQueSea " & "" & q & "", vbOKOnly, "Que lo sepas"
End Sub

Buenas Días, lo siento por no haber sido claro en mi pregunta, y sin querer se me fue el tag de Access, aunque también me sirvió mucho eso, sin embargo mi duda es en formularios de visual basic for applications.

Supongamos que tengo el usrForm1 que al igual que muchos otros también puede mostrar al mismo formulario2

Despues que se muestra el otro formulario con este codigo.

Private Sub CommandButton1_Click()
    UserForm2.Show
End Sub

Que es este, Mi pregunta es, hay alguna forma de capturar o dejar en la memoria los datos que se ingresaron en este formulario para yo seguir trabajando con ellos en este mismo código, una vez cerrado el userForm2, por ejemplo algo así:

Private Sub CommandButton1_Click()
    Dim Edad as Integer, Ciudad as String
    UserForm2.Show
    Edad= CInt(UserForm2.TextBox2.Text)
    Ciudad= UserForm2.TextBox2.Text
End Sub

Sabemos que el codigo se va a detener en UserForm2.Show y hasta que no cerremos el userForm2 no se van a almacenar los datos en Edad o Ciudad, Pero para cuando lo cerremos yo no se podran almacenar los datos, y las variables quedaran vacias, la unica forma es almacenarlas en otro lugar antes de cerrar el formulario.

Lo que normalmente hago es crear un modulo y declarar variables publicas Lo caual no creo que sea lo más apropiado) mandar en tiempo de ejecución los datos del userForm2 hacia allá y luego tomarlos desde el código de el user userForm1.

Quiero que me enseñen un método más efectivo, y breve de llamar otros userFrom, capturar datos y volver al formulario anterior y seguir trabajando con ellos.

Cristian lamento defraudarte pero no tengo ni idea de lo que mencionas. En Access puedo hacer casi de todo pero... De todas formas ¿has probado a declarar las variables como públicas?

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas