Inconveniente con UPDATE en Access con VBA

Por medio de la presente deseo pedirles el favor de lo siguiente:

Tengo una tabla llamada Productos que tiene un campo llamado Cantidad_compra necesito que dicho campo se decremente con otro campo llamado Cantidad_venta de una tabla llamada Productos_venta bajo un criterio que son los objetos de texto llamados cod_prod_piv y otro campo llamado Id_Cod_producto_venta, pero desafortunadamente no me decrementa nada el mencionado UPDATE. El codifgo es el siguiente:

Dim sSQL1 As String ' 18 de Mayo de 2015 DEBERIA ESTAR FUNCIONANDO BIEN pero decrementa Y ME DEJA EL VALOR EN 0
'''
sSQL1 = "UPDATE Productos INNER JOIN Productos_venta"
sSQL1 = sSQL1 & " ON Productos.Cod_producto = Productos_venta.Cod_producto_venta"
sSQL1 = sSQL1 & " SET Productos.Cantidad_compra= Productos.Cantidad_compra - Productos_venta.Cantidad_venta "
sSQL1 = sSQL1 & " WHERE Productos.Id_Cod_producto = " & Me.cod_prod_piv & " AND Productos_venta.Id_Cod_producto_venta= " & Me.Id_Cod_producto_venta & "" 'Esta bien
CurrentDb. Execute sSQL1 de verdad no entiendo por que no me decremeta.

1 Respuesta

Respuesta
1

Por lo que veo, en principio, la Sql está bien en cuanto a estructura. Si no te funciona me da la sensación que es por las condiciones WHERE, aunque sin ver la estructura de la BD y los datos que manejas resulta imposible saberlo.

Tendrás que depurar los resultados de esa consulta. Para ello, créate una consulta igual, pero que sea de Selección. En esa consulta y añadiría la Cantidad_Compra, la Cantidad_venta, y añade un campo calculado que te dé la diferencia entre <Cantidad_compra - Cantidad_venta>, a ver qué resultados te arroja.

Poco más puedo decirte sin verlo.

Hola Neckitto muchas gracias por tu respuesta pero mira te explico más a profundidad lo que esta pasando

https://www.youtube.com/watch?v=4GdpFjmsf2g 

Muchas gracias de nuevo

Att. Hernan Camilo M.V

Hernán:

He visto el vídeo pero, desafortunadamente, no me dice nada nuevo de lo que ya podía intuir por tu explicación.

Veo que la consulta de selección funciona correctamente. Sin embargo, no la estás ejecutando bajo las mismas condiciones con las que ejecutas la SQL.

La consulta de actualización te está filtrando por dos campos, y en la consulta de selección no has filtrado por nada. Lo que tendrías que hacer es lo siguiente (sobre la consulta de selección):

1.-

En el campo Productos.Id_Cod_producto ponerle un filtro que sea

Forms!NombreForm.cod_prod_piv.value

y en el campo Productos_venta.Id_Cod_producto_venta el filtro

Forms!NombreForm.Id_Cod_producto_venta.value

2.- Sitúa tu formulario en vista formulario, comprobando que esos dos controles (los que te dan el valor de filtro) tienen valor

3.- Sin cerrar el formulario, ejecuta la consulta de selección

A ver qué es lo que te devuelve.

Si así no consigues arreglarlo necesitaría ver tu BD, o una mini-BD con los elementos implicados, para poder analizar lo que te está pasando.

Que los códigos sean campos de tipo texto no debería tener ninguna influencia, en principio.

Hola Neckitto buenos dias aqui en Colombia, Tardes en España, quiero preguntarte por favor de que manera a que correo electronico o link te puedo hacer llegar la aplicacion y un archivo de word explicativo como adjuntos.

Gracias

Att. Hernán Camilo M.V

Te he enviado un mail. ;-)

Gracias amigo!.

Ya te he respondido. Espero que te funcione bien ;-)

Para quien le pique la curiosidad decir que la construcción de la sql de actualización no era correcta en atención a la estructura de los campos de tabla / subformulario. Imposible entrar en más detalles sin ver la BD.

 Muchas ¡Gracias! Neckitto probare los cambios en la Base de datos para ver los cambios..felicidades!.  

Hola Miguel pues prove el codigo que me pasaste pero mira el inconveniente que tengo.

https://www.youtube.com/watch?v=EE0bYW3MRNU 

Que pena la molestia pero no se a que se deba que el campo Cantidad_compra  de la tabla Productos no se pueda decrementar de todos modos estoy trabajando en eso, Muchas gracias!. Att. H.Camilo

Antes de la ejecución de la sql prueba guardando el registro. Es decir, escribe

sSql="Bla, bla"...

Docmd. Runcommand accmdsaverecord

currentdb.execute...

A ver qué tal va

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas