Es posible utilizar una función de usuario en un campo calculado de Access ?

Quiero que el campo entradas de mi tabla inventario, sea la suma de la cantidad de entradas de la tabla Movimientos. ¿Puedo utilizar una función de usuario para obtener ese valor en un campo calculado? ¿De manera que al consultar la tabla INVENTARIO siempre esté actualizada la existencia?

3 respuestas

Respuesta
2

En una tabla, en un campo calculado no puedes usar funciones personalizadas, solamente puedes usar funciones incorporadas de Access y de todas las que incorpora, solo una lista muy reducida de ellas.

Pero nada te impide usar esas funciones propias en una consulta.

Yo soy de los que piensan que en las tablas solo se deben guardar datos "fijos" y no los datos "calculados" que dependen de esos datos "fijos" (para eso están las consultas), salvo casos muy concretos. Por eso, en mi opinión, en la BD que muestras en el diseño (supongo que también tendrás una tabla "Productos" ) no sería necesario tener una tabla "Inventario" tal como la tienes, pues todos esos datos los puedes sacar por consultas, y así te evitas tener que estar constantemente actualizando esa tabla "Inventario". Cuando quieras consultar el inventario ejecutas la consulta y ya tienes los datos actualizados.

Te dejo un enlace a la web de Neckkito, donde tiene 5 ejemplos de gestión de almacén (tmabién hay uno que guarda los stocks en una tabla): http://neckkito.xyz/nck/?searchword=almacen&searchphrase=any&limit=20&ordering=newest&view=search&option=com_search por si te son de utilidad.

Aunque en los ejemplos usa dos tablas para registrar los movimientos (TEntradas y TSalidas), puedes hacerlo con una única tabla y como paso previo para calcular los movimientos haces una consulta que te muestre las entradas y otra para las salidas, y a partir de esas consultas, sigues el ejemplo.

¡Gracias!  Creo que eso voy a hacer porque realmente lo que quiero es que se actualice automáticamente la existencia por fórmula. Voy a checar los ejemplos. Muchas gracias 

Respuesta
1

Gracias lo tomaré en cuenta.

Respuesta
1

Las tablas no tienen código. Tienes que hacerlo en un formulario. Vamos a suponer que en la tabla Entradas tienes, entre otros campos, NumCuenta, Total,... Es decir un campo cuyo valor identifique a un único registro. En el formulario Movimientos, en el evento Después de actualizar del cuadro de texto Monto(le cambio el nombre para que se vea que los campos se pueden llamar de diferente forma entre Private Sub... y End Sub le pongo

docmd.setwarnings false

docmd.runsql"Update Entradas set entrada=dsum((""Monto"",""Movimientos"",""numcuenta=" & me.numcuenta & """) where numcuenta=" & me.numcuenta & ""

Es decir, actualizame el valor del campo Entrada de la tabla Entradas a la suma de montos de la tabla Movimientos en aquel registro en que su número de cuenta sea igual al número de cuenta donde estoy anotando el movimiento.

No es exactamente igual pero te puede dar una idea. Si tengo la tabla Productos(que sería la tuya de Entradas), donde puedes ver que en Existencia de Té Darhansala hay 40 unidades,

Si en el formulario Compras, que sería el tuyo de Movimientos, compro más Té.

He comprado 15 y automáticamente

En este caso, le digo en el evento Después de actualizar del cuadro de texto Cantidad

DoCmd.RunSQL "Update Productos set existencias=despues where producto='" & Me.Producto & "'"

Es decir, lo mismo. Actualízame el campo Existencias de la tabla productos al valor que aparece en el cuadro de texto Después en aquel producto en que su nombre sea igual al que he elegido en el control Producto

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas