Llenar un campo de una tabla en un campo de otra

Tengo problemas con Access 2007, en un campo de una tabla que quiero que se almacene en otra.
Tengo un formulario con dos subformularios, en uno de ellos tengo un campo llamado No_Clase, en el otro subformulario tengo el campo Cupones_Pagados.
Necesito que cuando llene el campo Cupones_Pagados del primer subformulario, en el segundo subformulario aparezca el mismo dato pero en No_Clase.
He leído algunas respuestas que se asemejan, pero no explican donde hay que poner el código y no se mencionan opciones.

1 respuesta

Respuesta
1
Cuando te posicionas, en vista diseño, en el primer subformulario sobre el campo Cupones_Pagados, verás el cuadro de propiedades del lado derecho y en ubica la sección "Eventos", dentro de la misma busca la línea "al perder el enfoque" y pincha para generar un código. Te abrirá la ventana de Visual Basic posicionado para comenzar a escribir el código. En el mismo simplemente tienes que escribir el nombre del campo de destino (segundo subformulario) y hacerlo igual al campo fuente (primer subformulario).
Ejemplo: (aunque no conozco el nombre de tus subformularios)
Forms!Nombredelsubformulario2!No_Clase=Forms!Nombredelsubformulario1!Cupones_Pagados.
También puedes asignarle el valor a unas variables y luego transferirlas a los campos. Por los nombres que le has puesto a los campos puede que la sintaxis que te he dado no funcione (por los guiones bajos que le has colocado).
Hay otras sintaxis que te pueden servir, como:
Forms("Nombredelsubformulario"). Controls("Nombredelcampo")
Si te funciona, bien. En caso de que no se adapte a lo que me preguntas me gustaría saber como has vinculado los subformularios y si su origen es otro formulario o tablas.
Hola Experto:
Muchas gracias por responder...
Bueno, la base de datos que hago tiene 3 Tablas y 3 formularios, Están relacionados de uno a varios en cadena:
1er Formulario se llama Datos Generales de la tabla del mismo nombre.
2do SubFormulario se llama Inscripcion_Clase que tiene el campo Cupones_Pagados.
3er SubFormulario se llama Asistencia_PagoxClase que tiene el campo No_Clase.
Seguí las instrucciones al pie de la letra en el campo Cupones_Pagados y en el generador de Códigos VBA escribí:
Forms!Asistencia_PagoxClase!No_Clase = Forms!Inscripcion_Clase!Cupones_Pagados
A su vez en el campo No_Clase en el generador de Código hice el mismo procedimiento.
Cuando Capturo datos, aparece un mensaje de error 2450 y dice que no se encuentra el
Formulario Inscripción_Clase de la expresión del código VBA.
La segunda opción la intenté de la siguiente manera:
En el Campo Cupones_Pagados escribí
Forms("Asistencias_PagoxClase".Controls (No_Clase)
En el Campo No_Clase escribí:
Forms("Inscripción_Clase").Controls (Cupones_Pagados)
Al ejecutarlo aparece un mensaje de error de compilación
Que dice: "El uso de la propiedad no es válido" y subraya .Controls del código.
y subraya en amarillo el Private Sub No_Clase_LostFocus()
Tal vez tengas razón en que deba asignar un valor cada campo y nombre de formulario, tengo entendido que en la plñantilla de VBA, asigno los valores más o menos así:
No_Clase = "a";
Cupones_Pagados = "b";
¿Esa es la manera correcta? ¿O hay otra opción?
Gracias por tu Colaboración.
El que te subraye el encabezado del procedimiento es simplemente que hasta allí llegó la ejecución del código antes de detectar el error. Esto si es un fallo de escritura lógico. En caso de fallos en algún paso en paricular la franja amarilla se detendrá donde detecte el error. Si en la ventana de depuración utilizas la tecla F8 podrás ir ejecutando el código paso a paso y posicionando el control sobre los nombres de campos y controles ver que valor va tomando en cada paso.
Según lo que escribes veo un error en el Campo Cupones_Pagos, que es donde se genró el error. La sintaxis correcta es Forms("Asistencias_PagoxClase"). Controls (No_Clase) Te faltaba un paréntesis.
Esa asignación es posible, pero recuerda siempre que los datos que asignes sean compatibles con los admitidos por el campo.
Otra opción es utilizar variables pivotes, que pueden servir para hacer operaciones o validaciones antes de asignarle el valor definitivo al control del formulario.
Muchas Gracias por la Ayuda
El problema en el código era un error en la sintaxis que debía señalar en las librerías del programa.
Saludos

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas