Ayuda para gestionar una base de datos de proveedores creada con el programa Microsoft Access

Tengo una base de datos en la que he creado una tabla de Proveedores y otra de Productos. He realizado el formulario Proveedores, en el cual tengo un botón con el que quiero agregar productos a dichos proveedores, pero cuando hago clic en el botón agregar productos, pierde el id del proveedor donde quiero que me lo guarde, es decir, lo que quiero es que cuando me encuentro el formulario de Proveedores, y pulso el botón agregar productos (dicho botón me cierra el formulario proveedores) me cree los productos del proveedor, en el proveedor que tenía seleccionado en el formulario Proveedores.
Creando algún producto en los distintos proveedores (por medio de las tablas) he conseguido mediante esta sentencia:
Dim txtNombreDocumento As String, quéProductos As String
Dim stDocName As String
txtNombreDocumento = "Productos"
stDocName = "Proveedores"
quéProductos = "[IdProveedor] = Forms![Proveedores]![IdProveedor]"
DoCmd.OpenForm txtNombreDocumento, , , quéProductos
DoCmd.Close acForm, stDocName, acSaveYes
Ver a través de los formularios, los productos de cada proveedor, pero, sigo teniendo el problema antes planteado, que cuando quiero agregar otro producto (agregar registro), pierde el id y me lo guarda en la tabla, pero no dentro del proveedor que tenía seleccionado, pero sin embargo si estoy en un registro de productos de un proveedor y hago clic en duplicar registro si me lo hace bien.
En resumen, lo que intento es que me guarde un producto en un proveedor en que cuyo registro estoy, sin tener que elegirlo, ya que me encontraba en su registro antes de cerrar el formulario proveedores. Otra cosa es que cuando haya acabado de introducir productos a ese proveedor, pulso otro botón (salir) y me cierra el formulario productos, y deseo "pero me abra el formulario proveedores en el cual estaba introduciendo sus productos".
Muchísimas gracias de antemano.

1 respuesta

Respuesta
1
Lo más probable es que tu problema se soluciona con aplicar un procedimiento de Formulario que contiene un subformulario anidado. En tal caso deberías tener una relación entre tablas de "Uno a Varios", y aplicar el siguiente procedimiento:
Crear un formulario que contenga un subformulario mediante el Asistente para formularios
Con este procedimiento se crea una nueva combinación de formulario y subformulario mediante el Asistente para formularios.
En la ficha Crear, en el grupo Formularios, haga clic en Más formularios y, a continuación, en Asistente para formularios.
En la primera página del asistente, en la lista desplegable Tablas y consultas, seleccione una tabla o consulta. En este ejemplo, para crear un formulario denominado Categorías que muestre los productos de cada categoría en un subformulario, seleccione Tabla: Categorías (el lado "uno" de la relación uno a varios).
Nota No importa la tabla o consulta que elija primero.
Haga doble clic en los campos de esta tabla o consulta que desee incluir.
En la misma página del asistente, en la lista desplegable Tablas y consultas, seleccione otra tabla o consulta de la lista. En este ejemplo, seleccione la tabla Productos (el lado "varios" de la relación uno a varios).
Haga doble clic en los campos de esta tabla o consulta que desee incluir.
Cuando haga clic en Siguiente, suponiendo que ha definido correctamente las relaciones antes de iniciar el asistente, éste preguntará ¿Cómo desea ver los datos?, es decir, por qué tabla o consulta. En este ejemplo, para crear el formulario Categorías, haga clic en Por Categorías. El asistente mostrará un pequeño diagrama del formulario. El cuadro de la parte inferior del formulario representa el subformulario.
En la parte inferior de la página del asistente, seleccione la opción Formulario con subformularios y haga clic en Siguiente.
En la página ¿Qué distribución desea aplicar al subformulario? Del asistente, haga clic en Tabular o en Hoja de datos dependiendo del diseño que desee para el subformulario. Ambos estilos de diseño ordenan los datos del subformulario en filas y columnas, pero un diseño tabular se puede personalizar con más facilidad. Se puede agregar color, gráficos y otros elementos de formato a un subformulario tabular, mientras que una hoja de datos es más compacta, como la vista de hoja de datos de una tabla. Una vez hecha la selección, haga clic en Siguiente.
En la página ¿Qué estilo desea aplicar? Del asistente, seleccione un estilo de formato para el formulario. Si eligió Tabular en la página anterior, el estilo de formato que elija también se aplicará al subformulario. Una vez hecha la selección, haga clic en Siguiente.
En la página final del asistente, escriba los títulos que desee para los formularios. Access asigna nombres a los formularios según los títulos que escriba, y etiqueta el subformulario de acuerdo con los títulos que escriba para el subformulario.
También en esta página, especifique si desea abrir el formulario en la vista Formulario para que pueda ver o introducir información, o si desea abrir el formulario en la vista Diseño para que pueda modificar su diseño. Una vez hecha la selección, haga clic en Finalizar.
Access crea dos formularios: uno para el formulario principal que contiene el control de subformulario y otro para el propio subformulario.
Muchísimas Gracias. He intentado hacerlo de esa forma y el resultado es el mismo que tengo, sólo funciona como quiero, en el caso en el que dentro del formulario Proveedores, inserte el subformulario Productos, de esta forma si puedo agregar un producto dentro del Proveedor, ya que al estar dentro del Proveedor y crear uno nuevo me coge el mismo Id, pero tal y como tengo planteado el tema, no me funciona, a no ser que cuando agregue un nuevo producto le introduzca manualmente el Id donde quiero que me guarde el registro (el Proveedor), pero mi deseo es que lo haga de forma automática, es decir, que si estoy viendo los productos que me corresponden a un proveedor, y desee agregar uno nuevo, me lo inserte en ese.
Muchísimas Gracias.
Descartado. Lo siento.
Muchas gracias de todas formas. Ya encontré la solución. Aquí se la anoto por si la necesita cualquier día:
DoCmd.OpenForm "Productos", , , "[IdProveedor]=" & Me!IdProveedor
Forms("Productos").Controls("IdProveedor").DefaultValue = Me!IdProveedor
DoCmd.Close acForm, "Proveedores"
Un saludo.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas