Autocompletar y vincular campos desde otra tabla Access

En sumario tengo las siguientes cuatro tablas:
· Bookings: Booking ID, Nombre, Fecha de Inicio, Fecha final
· Eventos: Evento ID, Booking ID, Nombre, Fecha de Inicio, Hora de inicio, Fecha final, Hora final. AV ID y Catering ID.
· AV: AV ID, Evento ID, Nombre de evento. Fecha de evento y lo correspondiente a esa tabla.
· Catering: Catering ID, Evento ID, Nombre de event, fecha de evento y lo correspondiente a esa tabla.
1) Si utilizo una subtabla en bookings, access copiará el nombre y la fecha, pero si voy a la tabla "Eventos" y completo el Booking ID manualmente (o con una lista), no lo hace. Es un problema porque necesito que los campos se autocompleten.

He optado por hacer tablas secundarias de AV y Catering porque no todos los eventos requerirar esto y necesito hacer un tracker independiente. Esta es la pregunta más fundamental que necesito resolver.
2) La segunda es, la tabla Eventos contiene Evento ID, Booking ID, AV ID, Catering ID.
AL crear un formulario he puesto un boton para crear un nuevo AV ID y un Catering ID. Pero también necesito que de alguna manera esté vinculado al Evento ID, su nombre y la fecha. Y no lo consigo lograr...

Respuesta
3

Si en el formulario(o subformulario) Eventos, escribes el Booking Id a mano, en las propiedades de ese cuadro de texto, en el evento Después de actualizar puedes crear un proc. De evento y poner

Nombre=dlookup("nombre","bookings","[booking id]='" & me.[booking id] & "'")

[fecha de inicio]=dlookup("fecha de inicio]","bookings","[booking id]='" & me.[booking id] & "'")

Etc

He supuesto que Booking Id es texto, si fuera numérico sería

.................................................."[booking id]= " & me.[booking id] & "")

Muchísimas gracias, aunque no ha funcionado. Error 424. Es un poco absurdo que si lo hago mediante subtabla sí se copian, pero luego no puedo hacer esto... 

A ver si con imágenes...
Booking ID (tabla eventos) es una Combobox de Booking N (Tabla bookings), entonces necesito que al seleccionar Booking ID se copien Object en Subject, Start en Date Start y Time Start, etc. 

Si lo hago através de formulario he hecho: Una combobox (origen Booking N) y eso o bien copia el número en Booking ID o bien el nombre o una u otra fecha, pero todo no, y es esencial que se duplique para que al sacar un report de la Tabla Events me diga a que Booking N corresponde...

Te lo pongo con mis nombres. Si tengo una tabla DetalleVenta

Y otra tabla DetalleCompra con los campos

Como puedes ver los campos se llaman de manera distinta. Con ambas hago dos subformularios, no serían necesarios pero es para que se vea mejor. Si tengo el formulario Ventas con esos dos subformularios y escribo algo en DetalleCompra

Cuando pulso Enter

Es decir, me ha guardado en la tabla DetalleCompra los datos de ese registro de la "tabla" detalleventa.

Como te decía no sería necesario todo esto. Bastaría con hacer un único formulario continuo con una de las tablas y, en este caso, pero ya te digo que es para que lo veas, el código del evento Después de actualizar del cuadro de texto Cantidad le pongo

Private Sub Cantidad_AfterUpdate()
DoCmd.SetWarnings False
DoCmd. RunSQL "insert into detallecompra(idventa, articulo, coste, cuantos)values(idventa, producto, precio, cantidad)"
Forms!Ventas!detallecompra.Form.Requery
End Sub

Si lo hicieras desde el único formulario continuo DetalleVenta te sobraría la penúltima linea de comando.

Muchísimas gracias por esto. Aun así, me sigue dando un error de Syntax.
Mi tabla Bookings importa los datos otro sitio, no los establezco yo. 
Mi tabla eventos a veces irá asociado a un booking y a veces no, por eso no puedo partir de los datos de booking. Y luego esta tabla está asociada a Requisitos AV, Catering y Empleados; lo mismo, a veces sí se requiere y a veces no. 
Creo que si hiciera funcionar el ejemplo que me has enseñado, me crearía campos vacíos en Requisitos AV, Catering...
Simplemente no entiendo como funciona todo esto y ahora me arrepiento de no usar el Excel...Pero bueno! Se hará lo que se pueda. Seguramente la solución es un dlookup pero ni con los 800 tutoriales que me he visto consigo hacerlo funcionar...asi que no sé :(

Puedes usar el Dlookup siempre y cuando quieras. Por ejemplo, supongamos que tengo una tabla Productos,

El cod producto equivaldría a tu Booking Id. También tengo una tabla DetalleVenta que se convertirá en un subformulario del formulario Ventas, pero como te decía antes, este formulario no sería necesario.

En el formulario Ventas, transformo el control Codproducto en un combinado con origen de la fila en el campo CodProducto de la tabla Productos y si elijo uno

En el mismo momento que lo elijo

El código del evento Después de actualizar del combinado CodProducto es

Private Sub CodProducto_AfterUpdate()
Producto = DLookup("producto", "productos", "codproducto=" & Me.CodProducto & "")
Descripcion = DLookup("descripcion", "productos", "codproducto=" & Me.CodProducto & "")
Precio = DLookup("precio", "productos", "codproducto=" & Me.CodProducto & "")
Cantidad.SetFocus
End Sub

En tu caso sería, más o menos

Loquesea=Dlookup("el campo que sea de la tabla","nombre de la tabla","[booking Id]=" & me.[booking id] & "")

¡Gracias! Al final utilicé el comando =me.column() para extraer datos de las combox. En cuanto al resto, utilicé consultas vinculadas (Lo cual tenía más sentido) y así me ahorro duplicar los datos :) 
Pero bueno, sigue habiendo problemas jajaj Muchas gracias por tu tiempo!

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas