Sumar registro por Update de una tabla a otra

Nuevamente recurriendo a sus conocimientos... Les cuento que necesito hacer, de una tabla1 campo "CANTIDAD" después de actualizar, necesito hacer un CurrentDb. Execute Update a la tabla2 en el mismo campo "CANTIDAD", pero que me lo sume, según criterio el cual en ambos es "CODIGOBARRA". Realice un código el cual es este:

Private Sub Cantidad_AfterUpdate()
DoCmd.SetWarnings False
If Nz(DCount("*", "Tabla_Inventario2", "CodigoBarra='" & Me.CodigoBarra & "'")) = 0 Then
    DoCmd. RunSQL "insert into Tabla_Inventario2(CodigoBarra, ValorVenta, DepartamentoInsumo)values(codigobarra, precioventa, Departamento)"
End If
DoCmd.SetWarnings True
Inventario = Inventario.Value - Cantidad.Value
DoCmd.SetWarnings False
CurrentDb.Execute "UPDATE Tabla_Inventario2 set cantidad2= dsum(" & Cantidad.Value & ") where [CodigoBarra]='" & Me.CodigoBarra & "'"
DoCmd. RunSQL "insert into HIST_MOV(CodigoBarra, TipoMovimiento, CantMovimiento, FechaMovimiento, HoraMovimiento)values(codigobarra,'SALIDA-INSUMOS', cantidad, date(), time())"
DoCmd.SetWarnings True
End Sub

Pero al ejecutarlo me arroja el siguiente error

No se cual es mi error si me pudieran orientar...

Respuesta
1

DSum() es una función que trabaja exactamente igual Que DLookup, o DCount (que usas una lineas más arriba en el mismo código): tienes que indicarle un campo, una tabla y opcionalmente una condición para limitar la suma, y tú solo has puesto un campo.

Si lo que buscas es sumar lo que tenga el campo Cantidad del formulario a lo que tenga el campo Cantidad2 de la tabla Inventario_2, sería:

CurrentDb.Execute "UPDATE Tabla_Inventario2 set cantidad2= cantidad2 +" & Cantidad.Value & " where [CodigoBarra]='" & Me.CodigoBarra & "'"

Por otro lado comentarte que si usas CurrentDb.Execute en vez de DoCmd.RunSQL, evitas tener que andar poniendo todos los DoCmd.SetWarnings True/False. Y si prefieres usarlo, con que pongas el SetWarning una vez al principio del código del procedimiento y otra al final, es suficiente, no necesitas ponerlos cada vez que tengas una linea RunSQL

¡Gracias! Sveinbjorn El Rojo, funciona a la perfección eres un genio...

Perdona Sveinbjorn El Rojo, se me fue un detalle... como podría realizar el Update comparando el registro ValorVenta, si hay una diferencia lo reemplace?

Gracias de antemano...

Exactamente ¿a qué te refieres con comparar con el registro ValorVenta?

Así, bote pronto, se me ocurren o que le pongas un If antes de ejecutar la actualización, en la que hagas esa comparación (similar a tus primeras lineas de código) o bien que le añadas otro criterio en el WHERE de la SQL UPDATE, para que te actualice los registros que coincidan con el código de barras y la nueva comparación

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas