Access, actualizar tabla con los datos de otra tabla y campos coincidentes

1-. Tengo la tabla GestionProductos con los siguientes campos:

IdItem Autonumérico, NumeroPedido, CodigoProyecto, CodigoProducto, CantidadPedida. Hasta aquí guarda los pedidos realizados. Además tengo: CantidadEnviada, Proveedor, Transportador, Notas

2-. Ahora quiero incluir los productos enviados y datos de proveedor y transportador. Estos productos los tengo en la tabla temporal EnviarProductosTemp con los siguientes campos:

IdItem Autonumérico, CodigoProyectoTemp, NumeroPedidoTemp, CodigoProductoTemp, CantidadEnviadaTemp, ProveedorTemp, TransportadorTemp, NotasTemp

3-. Lo que deseo hacer es, al dar click en el botonEnviar, que busque los valores coincidentes de:

CodigoProyectoTemp / CodigoProyecto, y NumeroPedidoTemp / NumeroPedido y CodigoProductoTemp / CodigoProducto e incluya en la tabla GestiónProductos la cantidad enviada, proveedor, transportador y notas.

Como siempre por su colaboración mil

1 respuesta

Respuesta
2

Me he perdido pero si el formulario GestiónProductos está basado en la tabla del mismo nombre, en cualquier evento podrías poner

docmd.runsql"update gestionproductos set cantidadenviada=dlookup(""cantidadenviadatemp"",""enviarproductostemp"",""codigoproyectotemp="" & me.codigoproyecto & """") where codigoproyecto=" & me.codigoproyecto & ""

Se deberían poner los demás campos, pero para ponerlo aquí, por el tamaño de la instrucción casi no se entendería.

Es decir, actualizame el valor de cantidad enviada, en aquel registro en que el código del proyecto sea igual al que hay en en el campo CantidadenviadaTemp, en la tabla enviarproductostemp, en aquel registro en que codigoproyectotemp sea igual al codigoproyecto que figura en ese momento en el formulario. (Suponiendo que los campos comúnes en ambas tablas sean Codigoproyecto y codigoproyectotemp. Además estoy suponiendo que ambos son numéricos.

Hola Icue, Gracias por atender la solicitud, trato de aclarar el tema para ver como me puedes colaborar

1-. El formulario no está basado en la tabla, frmEnvios tiene dos combos cmbProyecto que busca los proyectos, y comboNumeromedido que busca, dependiendo del proyecto del combo anterior, los pedidos que se han realizado solo este proyecto. esto lo busca de la tabla GestionProductos.

2-. Cuando se eligen proyecto y pedido (paso anterior), se muestra un listbox lbxproductos con los Códigos de Producto y otros datos. (también seleccionados de la tabla GesrionProductos)

3-. Luego el usuario da doble click sobre algún registro del lbxProductos y se llenan unos texbox con los datos específicos del producto principalmente el Código del Producto (y otros como marca referencia unidad de medida etc.) esto para que visualmente el usuario certifique que es uno de los productos correctos a enviar.

4-. luego están los combobox para elegir el proveedor, el combo para elegir el transportador y el textbox para escribir la cantidad que voy a enviar (que no siempre es la cantidad pedida).

5-. con el botón AdicionarProducto, envío los datos a la tabla temporal EnviarProductosTemp.

6-. Los campos de código proyecto y código producto son texto corto y la cantidad a enviar es numérico.

Entonces la idea es que cuando el usuario termine de incluir los productos que va a enviar con el botón AdicionarProducto (uno a la vez, es decir el usuario repite desde el paso 3 de esta nota), y que quedan en la tabla EnviarProductosTemp. cuando de click al botón GenerarEnvio, copie los datos de la tabla temporal a Gestionproductos, buscando las 3 coincidencias 1-. Proyecto 2-. Numero de Pedido y 3-. Código de Producto, copie proveedor, transportador y cantidad enviada

ejemplo: envío para el proyecto: P-501 - Numero Pedido 5 - código de producto a-001, a-002 y b001. es decir actualiza la tabla GestionProdcutos en el proyecto, pedido y los tres productos.

entiendo que es extenso de explicar y Gracias por el tiempo que le dedicas.

saludos...

Vamos a ver si me he aclarado. Si tengo la tabla GestionProductos

Y la tabla EnviarProductosTemp

En cualquier evento, pero para el ejemplo lo pongo en un combinado llamado Elegir, de un formulario que podría ser cualquiera. En el combinado le digo que me muestre sólo aquellos CodigoProyectoTemp que tengan correspondencia con los codigoproyecto de la tabla GestionProductos( ¿para qué me va a mostrar todos si quizá alguno no tenga esa correspondencia?)

Cuando elijo el valor, me deja la tabla GestionProductos como

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

Private Sub Elegir_AfterUpdate()
DoCmd.RunSQL "update gestionproductos set codigoproducto=dlookup(""codigoproductotemp"",""enviarproductostemp"",""codigoproyectotemp='" & Me.Elegir & "'"")" _
& " ,cantidadenviada= dlookup(""cantidadenviadatemp"",""enviarproductostemp"",""codigoproyectotemp='" & Me.Elegir & "'"")," _
& " proveedor=dlookup(""proveedortemp"",""enviarproductostemp"",""codigoproyectotemp='" & Me.Elegir & "'"")," _
& " transportador=dlookup(""transportadortemp"",""enviarproductostemp"",""codigoproyectotemp='" & Me.Elegir & "'"")" _
& " where codigoproyecto='" & Me.Elegir & "'"
End Sub

Hola Icue, nuevamente gracias,

la actualización no depende del combinado elegir, sino de la comparación entre las dos tablas. (no sabía como insertar gráficos) esto lo explica mejor

tengo la tabla GestionPoductos, que se llena desde un formulario donde el usuario de cada proyecto solicita los productos.

cuando el usuario de almacén está generando un despacho envía los productos a una tabla temporal ProductosREMTemp (REM de remisión, Temp de temporal).

la idea es que con un boton x busque el código del proyecto para el ejemplo el P-501 (en Verde), busque el número de pedido, para el ejemplo el 32 (en Rojo) y busque los productos, para el ejemplo 0202002 y 02020018 (en amarillo) y actualice la tabla Gestionproductos con los datos de ProductosREMTemp (en morado)

nuevamente gracias por la paciencia y colaboración.

saludos...

Entonces es mucho más sencillo, pero ¡ Joder con los nombrecitos! Si tengo la tabla

Como puedes ver CantidadEnviada, Proveedor y transportador están vacías. Tengo la otra tabla

Construyo una consulta de actualización a la que llamo consulta1

Luego en el formulario que sea le pongo un botón

Al pulsarlo

En el código del botón, en el evento Al hacer clic sólo le pongo

Docmd. Openquery"consulta1"

Lo que sería conveniente es que después de ejecutar la consulta, le pusieras algo como

Docmd. RunSql "delete * from T007productos..."

Porque, si no se hace así, estaría actualizando campos de la la tabla Gestión... aunque ya estuvieran actualizados.

Icue, Muchas ¡Gracias! funciona perfecto.

si, la tabla temporal se borra  y también se limpian todos los campos del formulario...

saludos...

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas