Problema al pasar datos de un formulario a otro

Me voy a intentar explicar lo mejor posible.

Mire tengo un formulario el cual voy a introducir datos como si fuera un diccionario pero mucho mas completo.

Al llegar a un punto del formulario le he puesto un campo llamado Véase para que en vez de tener que introducir el concepto todo entero pincho en el botón que tengo al lado de véase y me lleva a otro formulario el cual tengo dividido todas las palabras para buscar la palabra que yo quiero y pincharla, me cierre ese formulario y en el primer formulario me introduzca la palabra que yo he elegido en el cuadro de texto de véase, todo me sale correcto pero a la hora de coger esa palabra e introducirla en el texto me sale que el campo no existe, he comprobado que tengo la palabra en memoria, que estoy situado en el formulario correcto pero me dice que no existe ningún campo de la tabla.

Te menso el código del botón al hacer click

Private Sub Termino_Click()
' la variable vea es publica '
vea = Form!Termino.Value
DoCmd.Close acForm, "F_Vease"
' el campo vease_termino pertenece al formulario anterior de altas '
Vease_termino.SetFocus
Form!Vease_termino.Value = vea
End Sub

1 Respuesta

Respuesta
1

El error te aparece porque en el formulario "Véase" el control "Vease_termino" no está asociado a un campo en una tabla.

Vamos a ver lo que hace tu código...

Private Sub Termino_Click()

Esto indica que es el procedimiento que se ejecuta al hacer Click en el control "Termino". Normalmente el evento Click se utiliza en botones de comando, que no tienen ningún valor.

' la variable vea es publica '
vea = Form!Termino.Value

Aquí estás indicando que asignes el valor del formulario "Termino" a la variable "vea".

Los formularios no tienen valores, son objetos contenedores de otros objetos (controles), pero por si no tienen la capacidad de tener valores.

Tampoco es bueno poner el mismo nombre de un control a un formulario o a la inversa, puede dar lugar a errores.

Por ejemplo, si el control Cuadro De Texto donde metes el texto este se llama "txt_NuevoTexto", la forma de hacerlo sería:

vea = Me.txt_NuevoTexto.Value

También podrías escribir el valor directamente en el control del otro formulario. Si el formulario se llama "Altas" la instrucción sería:

Form_Altas.Vease_Termino.Value = Me.txt_NuevoTexto.Value

De esta forma te ahorras el tener que usar una variable intermedia.

También otra posible causa sea el alcance de la variable "Vea", ¿dónde la has declarado y cómo?. Si la declaras en el módulo de un formulario, sólo es visible en ese formulario, si la declaras en un módulo como Public, entonces es visible en todo el proyecto (toda la aplicación).

Muy buenas otra vez.

Mire he echo mas o menos lo que me sugierio que hiciera.

Pero ahora me sale otro error: "no se permiten constantes, cadena de longitud fija, matrices e instrucciones declare"

Mire el botón que cree para que me abriera otro formulario y ahí pulsar con el ratón para que me pusiera en el formulario del botón el dato que había puesto pues me da ese error, si lo hago mediante vba, pero si lo hago mediante macro siguiendo esta secuencia no me da error pero no se como mediante macro darle la orden para que me ponga el valor de la variable que cree:

1. abrir formulario, dialogo

2 ir a control vease_termino

3 aquí debería poner el valor de vea pero no se hacerlo mediante macro.

al hacer esa secuencia mediante vba es cuando me da el error lo hago así:

Private Sub Anex_Vease_Click()
DoCmd.OpenForm "F_Vease", , , , , acDialog
Vease_termino.SetFocus
Me.Vease_termino.Value = vea
End Sub

Espero que me haya explicado mas o menos, si no entiendes algo siempre te puedo mandar la Base de datos para que le eches un vistazo.

Muchísimas gracias de antemano.

Lo que te puse lo hago muy a menudo, ya que esta es una práctica bastante más común de lo que parece.

Si quieres, puedes poner la base en un servidor tipo Dropbox, SkyDrive, GoogleDocs y otros, y poner el enlace por aquí.

Te la miro y si veo algo que no sea correcto, te lo digo.

Muy buenas otra vez, no he podido contactar antes.

Te reitero las gracias por perder el tiempo en intentar arreglar este problema que me trae por la calle de la amargura.

Te mando el enlace de Dropbox por si me puedes ayudar.

https://www.dropbox.com/s/l29vsrj1377w7d1/Terminos.accdb

El problema se encuentra en el formulario F_Altas y el F_Vease

Muchísimas gracias.

Estoy revisando la base de datos, a mi tampoco me funciona lo de utilizar VBA para abrir el formulario desde el subformulario, sin embargo, desde el formulario padre funciona perfectamente.

Por otro lado, si es un formulario para dar de alta nuevos registros, no debería aparecer ningún dato nunca, sin embargo carga datos desde las tablas.

Voy a hacer un formulario, nuevo, para las altas.

Cuando lo tenga te aviso.

Ya he encontrado el problema, y la solución. Te he dejado la base de datos aquí.

https://www.dropbox.com/s/i3fytcfecwp6979/Terminos.accdb

Muchísimas gracias por su ayuda.

No veas los quebraderos de cabeza que me ha dado, en lo que has echo una solución fácil.

Un saludo.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas