Como puedo añadir registros desde un formulario de búsqueda a un subformulario de otro formulario de registros de artículos

Tengo un formulario [Entrada_almacen] con un subformulario [Subformulario entradas almacen] en el que quiero que se vallan añadiendo los registros; Código (es un campo calculado), Artículo (combobox, porque también lo puedo seleccionar y si lo hago así, también adjunto el código y la referencia del fabricante, que eso lo he conseguido) y Referencia_fabricante(texto).

Los campos quiero ir filtrándolos desde otro formulario de artículos que se llama [Código2]. Es un formulario dividido y la idea es que cuando seleccione el registro deseado, uno a uno, con un botón se me vallan añadiendo.

1 respuesta

Respuesta
2

Antonio, la verdad ante todo, me he perdido, pero si lo que quieres es que desde un registro de un formulario se "ingresen" ciertos valores en un subformulario, no te queda más remedio(a menos que abras un formulario sobre el otro) que ingresarlos en la tabla Origen del subformulario. Por ejemplo,

Docmd. Runsql"insert into detalleventa(referencia, familia, producto,...) values (text0, Text2,"text4,...)"

Texto0 y los demás son cuadros de texto del formulario de ¿búsqueda? Los campos destino y origen no tienen porque llamarse igual pero sí ser de datos coherentes entre ellos.

Luego en cualquier evento del segundo formulario, podrías poner(pero ya te digo que me he perdido)

me.nombredelsubform.form.requery

A ver si me explico mejor. Tengo un formulario con un subformulario en el que creo un albarán de entrada de material y los materiales los introduzco en el subformulario desde un cuadro combinado. Entonces al ser muchos artículos he creado otro formulario con filtros para localizar el material y quiero a ver cómo los voy añadiendo al subformulario conforme los valla localizando 

Antes de nada, permiteme un comentario. Nunca le he visto utilidad ninguna a los formularios divididos. Pienso que lo ha "parido", aunque no sirva para nada, algún programador de Microsoft para justificar su trabajo y que lo lo despidan.

Por otro lado, si ya tienes Grupo, Familia y Referencia, ¿para qué quieres el campo Código? Basta con unir los anteriores.

Bueno, supongamos que tengo la tabla Productos, más o menos como en la imagen

Y también tengo un formulario Ventas con un subformulario DetalleVenta, que creo que es, más o menos, como tu subformulario.

Cuando pongo el cursor en el control Producto, aunque podría ser de otra forma, se abre el formulario Productos en vista diálogo y en modo Sólo Lectura. Te pongo en amarillo el producto seleccionado para que veas que lo pasa al subformulario

Elijo otro

Cuando cierro el formulario Productos

El código del evento Al recibir el enfoque del cuadro de texto Producto del subformulario es

Private Sub Producto_GotFocus()
If Me.NewRecord Then
DoCmd.OpenForm "productos", , , , acFormReadOnly, acDialog
End If
End Sub

Y el código del evento Al recibir el enfoque del control Producto del formulario Productos es

Private Sub Producto_GotFocus()
If CurrentProject.AllForms("ventas").IsLoaded Then
DoCmd.RunSQL "insert into detalleventa(codigo,producto,precio)values(grupo &"".""& familia &"".""& referencia,producto,precio)"
DoCmd.RunSQL "update detalleventa set idventa=forms!ventas!idventa where idventa is null"
Forms!ventas!DetalleVenta.Form.Requery
End If
End Sub

De forma, que si abres el formulario Productos, sin estar abierto el de ventas puedes "dar de alta" los productos sin problema ninguno.

Dicho todo esto, yo no lo haría así. Por ejemplo cambiaría los controles Grupo, Familia, Referencia y Producto del subformulario por combinados, de forma que me fuera limitando en cascada las familias, después de elegir una, las referencias, etc de forma que al final en el combinado Producto sólo me aparecieran aquellos correspondientes a ese grupo, familia y referencia.

Me había olvidado. Si quieres, repito, si quieres, mándame un mensaje(sólo el mensaje) a [email protected] y te mando un ejemplo de como lo haría, que quizá te pueda dar alguna idea.

Si lo haces, en el asunto del mensaje pon tu alias Antonio María, ya que si no sé quien me escribe ni los abro.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas