Enlazar campos de formularios diferentes

<span style="border-collapse: collapse; color: #4a4a4a; font-family: Arial; line-height: 17px;">Tengo dos formularios, Equipos y Modelos. El primero tiene tres campos (cuadros combinados) que son, Lista_Producto_Equipo, Lista_Fabricante_Equipo y Lista_Modelo_Equipo, además tiene un botón que es Añadir Modelo que abre el otro formulario. Éste tiene también tres campos, dos que son cuadros combinados llamados Lista_Producto_Modelo y Lista_Fabricante_Modelo y el otro que es un cuadro de texto llamado Nombre. Pretendo que cuando abra el segundo formulario aparezca preparado solo para incluir la información del cuadro de texto, es decir, que en Lista_Producto_Modelo y Lista_Fabricante_Modelo aparezca la selección hecha en Lista_Producto_Equipo y Lista_Fabricante_Equipo del primer formulario. He probado con la opción de crear un botón que abra un formulario buscando los datos específicos que se van a mostrar de manera que relacione los cuadros combinados, pero lo único que consigo es que se abra el formulario segundo por un registro cuyos campos son iguales a los introducidos en el primero y si no hay coincidencia la apertura se realiza con los campos sin rellenar (apertura del formulario en blanco). Estoy realmente desconcertado, he probado multitud de cosas y ya no sé si el error viene del código o de la propia estructura de las tablas. Te agradecería me indicaras algo para seguir probando porque se me han agotado las ideas.</span>

1 Respuesta

Respuesta
1
Supongo que lo que hacer al abrirlo es un filter, por eso si no existe el registro te sale en blanco, como para crear un nuevo registro.
Cuando hace el openForm por código, el ultimo parámetro de la función es el OpenArgs, donde le puedes pasar los parámetros por defecto y ponérselos en el load del form.
Los puedes leer poniendo Me. OpenArgs
Hola, gracias por la respuesta pero me temo que estoy demasiado pez en el tema y necesito una mayor aclaración. Efectivamente tienes razón en que actúa como un filtro luego gracias por al menos haberme resuelto ya el por qué del fallo, sin embargo a partir de ahí me pierdo. Lo de OpenArgs entiendo que debe ser una sentencia tipo Me![nombre_a_copiar] Pero lo de ponerlos en el load del formulario no sé cómo hacerlo, te agradecería nuevamente que me indicaras cómo. Un saludo
Por lo que veo, no dominas mucho del tema visual basic en access
Si miras las propiedades del botón que has creado, te vas a eventos, a la derecha del evento de hacer click o pulsar aparece un botón con tres puntos, si lo pulsas te lleva al código que ejecuta el botón.
Debe aparecerte una sentencia docmd. Openform
esta sentencia tiene un parámetro al final que es el que te comentaba que puedes pasarle los valores al formulario.
Si ves que no te aclaras me lo dices
Hola de nuevo y perdona que sea tan pesado, efectivamente de visual basic conozco el nombre y poco más, de todos modos lo que me indicas sí que lo había comprobado ya, concretamente lo que he puesto ha sido lo siguiente:
Dim stLinkCriteria As String
stLinkCriteria = "[comprado]=" & "'" & Me![producto] & "'"
DoCmd.OpenForm stDocName, , , , , , stLinkCriteria
Donde comprado sería el nombre del cuadro donde quiero que aparezca lo que he introducido en producto.
Esto no me produce ningún resultado, el formulario se abre en blanco, supongo que lo de OpenArgs tendrá otra formato pero lo desconozco. Gracias de nuevo.
Lo que yo te digo es que en el formulario que abres, en el evento load del form (en visual basic) compruebes si no hay ningún registro, crees tu uno con el dato informado.
O si prefieres, en el código que me enseñas, antes de abrir lo compruebes, y si no existe lo crees.
Prueba con este código sustituyendo el nombre en negrita por el nombre de tu tabla
Dim stLinkCriteria As String
Dim stSQL as string
Dim rs as new Adodb.recordset
stLinkCriteria = "[comprado]=" & "'" & Me![producto] & "'"
stSQL = "Select * from [nombretabla] where " & stLinkCriteria
 rs.Open stSQL, CurrentDB.Connection
If rs.eof then
rs.AddNew
rs("comprado")=Me![producto]
rs.update
end if
rs.close
set rs=nothing
DoCmd. OpenForm stDocName,,,,,, stLinkCriteria
Lo he probado pero me sale un mensaje de "operación no válida pare este tipo de objeto", supongo que sabrás qué es lo que quiere decir.
¿Qué linea es en la que te da el error? Si no sabes como mirarlo, a lo mejor me la tienes que enviar para que ayude
Ya he conseguido resolverlo, no sé si ha sido de forma muy chapucera pero utilizando la opción de Valor predeterminado y enlazando éste a los campos del formulario previo que deseaba repetir, consigo lo que busco. De todos modos y aunque no has conseguido indicarme cómo hacerlo (o sí y yo no he sabido realizarlo) me ha sido de gran utilidad las distintas propuestas indicadas. Muchas gracias.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas