Rellenar un campo de un formulario access con los datos de otro campo de otro formulario llamante

Tengo una situación que para aclararla y aclararme os explico:

Tengo dos formularios uno de ellos(A) tiene los campos nombre, apellidos y próxima cita

El otro formulario(B) es el de la citas del día, compuesto por los campos cita_día y 6 seis campos cada uno con el nombre de la hora, es decir, serían 1_1000, 2_1030, 3_1100, 4_1130, 5_1200 y 6_12_30, cuando pico en el campo próxima cita del formulario A se me abre el formulario B con el día de la cita correcto, ahora viene mi problema, el formulario B tiene el resto de campos en blanco y quiero que al hacer clic en uno de ellos me ponga el nombre y apellidos del formulario A y al cerrar el formulario B en el campo de próxima cita del formulario A me ponga la hora del campo marcado en el formulario B.

No se si me he explicado bien, si alguno puede ayudarme se lo agradeceré.

1 respuesta

Respuesta
1

En el campo (o campos) del formulario B que quieras rellenar, en el evento Al hacer click, de pones este código:

Me.Nombre=Forms.FormularioA.Nombre

Me.Apellidos=Forms.FormularioA.Apellidos

Y así con todos los campos, suponiendo que Nombre, Apellidos y FormularioA son los nombres de tus controles y formulario.

En el evento Al Cerrar del Formulario B, pones este otro, suponiendo que sólo puedas rellenar uno de los 6 campos de hora:

Dim laHora as Variant  'Declaro la variable como Variant porque no sé de que tipo es en tu caso:

If Nz(Me.1_1000,"")<>"" Then laHora=Me.1_1000

If Nz(Me.2_1030,"")<>"" Then laHora=Me.2_1030

If Nz(Me.3_1100,"")<>"" Then laHora=Me.3_1100

(... Y así con los otros 3)
Forms.FormularioA.[próxima cita]=laHora

Nuevamente, lo que está en negrita tendrás que cambiarlo por los nombres que tengas en tu BD

Muchas gracias por tu rápida respuesta, en el caso de los nombres me ha quedado claro, pero en el caso de cerrar no puesto que si es la primera cita de ese día funcionara pero si es la última los otros cinco campos ya los tengo rellenos y entonces no será posible esa comparación,¿de que otra forma le puedo meter mano?, el campo  en si tendrá el nombre y los apellidos, pero como lo que quiero es saber el que ha rellenado será una constante con la hora de cada campo, es decir en la próxima cita pondré "&día_cita : 1000" o "&día_cita : 1030", etc dependiendo en que campo se haya puesto el nombre y apellidos.

Gracias. 

Perdona mi torpeza, tampoco puedo poner los apellidos en la hora de la cita, como ves en la foto cada campo 1_1000 etc es el nombre del campo de citas, y donde debo insertar apellidos y nombre que provienen de la tabla origen A este formulario sería la tabla B, dime si me he explicado y si me puedes ayudar, gracias.

Problema tras problema. el nombre del formulario lleva un blanco, el nombre de los campos del formulario de citas empiezan por número y por eso no me salia lo que me decías, estos campos son fáciles de cambiar, pero como hago referencia al formulario con el blanco es decir, como soluciono esto:

Me.D1_1000=forms.Ficha Necesitado.APELLIDOS

Gracias y perdóname la murga. 

Veamos, empezando por la última (nombre del formulario con espacio en blanco), lo puedes solucionar de varias formas:

1º/ La más obvia, cambiar el nombre al formulario.

2º/ Hacer referencia al formulario de alguna de estas maneras:

.- Me.D1_1000=Forms.Ficha_Necesitado.APELLIDOS

.- Me.D1_1000=Forms.[Ficha Necesitado].APELLIDOS

.- Me.D1_1000=Forms("Ficha Necesitado").APELLIDOS

Con las otras dudas, no me ha quedado de todo claro, pero antes de pedirte más datos, voy aventurar otra idea:

Como lo que quieres es saber la última cita, puedes hacer las comparaciones al revés, empezando por el último campo y hacia el primero. En el momento que el campo no sea nulo, sales al traspaso y cierre de B, algo así:

Dim laHora as Variant  'Declaro la variable como Variant porque no sé de que tipo es en tu caso:

If Nz(Me.6_1230,"")<>"" Then

laHora=Me.6_1230

Goto Salida

End If

If Nz(Me.5_1200,"")<>"" Then

laHora=Me.5_1200

Goto Salida

End If

(... Y así con los otros )

Salida:

Forms.FormularioA.[próxima cita]=laHora

Dudas que me surgen:

1º/ ¿El formulario de la imagen es el que te refieres como "Formulario B"?

2º/ ¿Los campos 1_1000, 2_1000... son los que quieres llenar con el nombre y apellidos que vienen del "Formulario A"? ¿Se basan sobre una tabla? ¿Qué tipo de datos son (texto, fecha...)?

Releyendo de nuevo tus preguntas, para pasar la hora al formulario A, intenta esto:

Dim laCita as String 

laCita=Me.dia_cita      'Ojo!!, si día lleva acento, ponlo así: Me.[día_cita]

If Nz(Me.6_1230,"")<>"" Then

laCita=laCita & ": 1230"

Goto Salida

End If

If Nz(Me.5_1200,"")<>"" Then

laCita=laCita & ": 1200"

Goto Salida

End If

(... Y así con los otros )

Salida:

Forms.FormularioA.[próxima cita]=laCita

De esta manera, creas una variable de texto (laCita), que se inicia con el valor del campo "día_cita" y vas mirando los campos de las horas, empezando desde el final, para ver cual es el primero que no está vacío (que será la última cita), coges la hora y vas al "apartado" de Salida, para abrir el formulario a y pasarle el valor.

A ver si estas indicaciones te sirven.

Casi perfecto, pero las citas no las tengo porque dar consecutivas, pero me has dado una gran idea amigo, en vez de preguntar por <>"" podría preguntar si es igual a &apellidos y si me da el ok esa sería la cita. ¿Podría ser así?

Muchísimas gracias.

Sí, si buscas el apellido como dices te debiera funcionar.

¡Gracias! 

Amigo, estoy ahora mismo en Vigo, y me siento muy agradecido a tu ayuda, que por suerte o desgracia estos dos días me han dado tiempo a estudiar esto.

Un saludo

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas