[RESUELTO] Cálculos en seguimiento de Stock.

Discute sobre las herramientas de la base de datos
Responder
Avatar de Usuario
elchos
Mensajes: 4
Registrado: Jue Nov 11, 2021 11:38 pm

[RESUELTO] Cálculos en seguimiento de Stock.

Mensaje por elchos »

Hola, soy nuevo escribiendo, hablando y ahora, también, solicitando de vuestra sapiencia.
He aprendido y tomado ejemplos. Extraje y utilicé macros, ideas y producciones, por demás generosa y desinteresadas de los foristas. Respeto y admiro eso, el compromiso y el aporte.
Juego a que puedo clasificar películas, administrar un kiosco o que perfeccionar una agenda.
He llegado a construir lo que aquí les presento (solo una parte para no aburrir) a partir de los conocimientos desde cero que silenciosamente incorpore.

PLANTEO DE LA SITUACION:

[*]-Una oficina se divide en 3 Zonas (A,B y C) y, cada una, se subdivide en Sectores con jefes que llevan un Stock del Sector (10 Jefes/Sector).
[*]-Cargan una vez al mes lo que entra y sale en el Sector.
[*]-En el formulario de Stock esta la diferencia de Entrada y Salida en el mes. Y otros casilleros que desearía se rellenen con sus cálculos respectivos y, a su vez, se guarden en una tabla para una futura consulta.

PROBLEMA A RESOLVER: No puedo, no encuentro la forma de que el "Acumulado Actual" y el "Saldo Mes Anterior" a medida que se carga mes a mes números y fechas se reflejen en el mes siguiente con el calculo respectivo.
Otro tema es si se va a presentar un inconveniente al pasar al siguiente año.

Los ejemplos en imágenes aquí abajo hablan de lo mismo. Intento ser lo mas claro posible para no demandar mayor esfuerzo del que a mi me falta para resolverlo. Sin mas palabrerías adjunto, también la humilde BD.

********************************
01/01/2019

Imagen

Imagen

********************************
01/02/2019

Imagen

Imagen

********************************
01/03/2019

Imagen

Imagen

URL Base (236Kb en .rar)
https://mega.nz/file/C5gDXIoL#J3gu1CubP ... E3fwuM01YQ

Desde ya gracias, así sea solo la lectura del desafío.
Diego.
Última edición por elchos el Jue May 05, 2022 5:58 pm, editado 3 veces en total.
Libre Office 7.1.2.2
Longi
Mensajes: 804
Registrado: Dom Ene 20, 2013 9:05 pm
Ubicación: Ourense, Galicia, España

Re: Cálculos en seguimiento de Stock.

Mensaje por Longi »

Buenas!
Me es un poco complicado seguir tu lógica, pero parece que necesitas campos calculados. Lo que me parece es que según alguna circunstancia los cálculos son unos u otros.
Sería bueno saber si solo los necesitas en pantalla o guardar el cálculo en la tabla.
Se puede atacar con consulta, de tal modo que los campos a calcular serían de un subformulario relacionado con el formulario principal, y ese subformulario tendría como origen de datos la consulta que hace el cálculo (en este caso no se guarda en tabla, pero se muestra perfectamente)
También puedes, con macro usar los valores en los campos que quieres, hacer los cálculos y por último mostrarlo en el campo que quieres. En este caso puedes guardar los resultados, aunque todo el que sabe de esto dice que si puedes calcular un valor a partir de otros es un esfuerzo para la tabla que no es necesario.
Te pongo un ejemplo hecho a bote pronto (por lo tanto sin garantías de funcionamiento) en el que he hecho sumas, pero supongo que alguno de los términos hay que restarlo. Eso te lo dejo a tu elección, ya que digo que no termino de entender la lógica, pero si entiendes cómo va la macro te valdrá.
Lo que no tengo claro es que funcione el signo de suma, ya que si lo toma como texto concatenará.....Es cuestión de probar, pero podemos usar la función de conversión Cint() para pasarlo a número.

Código: Seleccionar todo

Sub Calculo
oForm = Thisdatabasedocument.formdocuments.getbyname("MainForm")
oNota1= oForm.getByName("St_Mes_Ant_Not").CurrentValue
oNota2= oForm.getbyName("fmtEnt_Not").CurrentValue
oNota3= oForm.getByName("Campo formateado 1").CurrentValue
oNota4= oForm.getByName("SaldoNot").CurrentValue
oNota5= oForm.getByName("St_Mes_Ant_Not")
oNota5.BoundField.UpdateString(oNota1+oNota2+oNota3+oNota4)
End sub
La macro la aplicarías en el evento 'al cambiar' o 'al salir' de cada uno de los campos implicados en el cálculo, asi calcula en cuanto lo varíes o cuando abandones el campo.
A ver si te sirve!

Un saludo! ;)
Openoffice 4.1.7, en Windows 10
Libreoffice 6.4.2, en Windows 10
Avatar de Usuario
elchos
Mensajes: 4
Registrado: Jue Nov 11, 2021 11:38 pm

Re: Cálculos en seguimiento de Stock.

Mensaje por elchos »

Hola Longi! perdón por el tiempo de respuesta. Probé tu macro y no lograba encontrar el lugar correcto.
La idea muchas veces no es compatible con la lógica (en mi caso. Debería acercar esos extremos para tener algo concreto. :) ).

Estos días he estado buscando, buscando y reformulando. Halle lo que necesito de manera parcial.

Con esta macro he resuelto que me vaya acumulando los saldos del mes pero de todos los registros.
Necesitaría algo (un poco) mas complejo que desconozco. Y es que el cálculo sea la sumatoria del acumulado de la columna "SaldoNot" por cada "Jefe").

Tabla: Stock
Formulario: F1
Macro: PonerExistNot (Modulo1)


Por ejemplo:
Jefe 1500 Fecha: 01/01/2022 Entran a su puesto 100- Sale 50 = 50 / Acumula 50
Jefe 1501 Fecha: 01/01/2022 Entran a su puesto 200- Sale 100 = 100 / Acumula 100
Jefe 1500 Fecha: 01/02/2022 Entran a su puesto 30- Sale 20 = 10 / Acumula 50+10 = 60
Jefe 1501 Fecha: 01/02/2022 Entran a su puesto 300- Sale 150 = 150 / Acumula 150+100=250

Mi intuición dice que un ajuste del SQL dentro de la Macro (que sustituya al actual: "SELECT ExistenciasNot FROM ConsStock WHERE ID = (SELECT MAX(id_St) FROM Stock)")funcionaria correctamente.

Código: Seleccionar todo

Macro:
REM  *****  BASIC  *****
Option Explicit

Sub PonerExistNot(Evento As Object)
   Dim oForm As Object
   Dim oNumero As Object
   Dim oStat As Object
   Dim sSQL As String
   Dim oRes As Object
   Dim vNumero As Integer
   oForm=Evento.Source
   If oForm.IsNew Then
      oNumero=oForm.T1.GetByName("SaldoNot")
      oStat=ThisDatabaseDocument.CurrentController.ActiveConnection.CreateStatement
      sSQL="SELECT ExistenciasNot FROM ConsStock WHERE ID = (SELECT MAX(id_St) FROM Stock)"
      oRes=oStat.ExecuteQuery(sSQL)
      oRes.Next
      vNumero=oRes.GetInt(1)
      oNumero.BoundField.UpdateInt(vNumero)
   End If	
End Sub
Acompaño imagen y BD.

Imagen

https://mega.nz/file/K9wFHC5b#4aO5I5LCm ... eEToG9-OcA

PD: si esto funciona, no termina ahí. Luego debería hacerlo para cada tipo de ingreso de Documentos (El acumulado de: SaldoNot, SaldoRut, SaldoRec para cada Jefe)

Gracias desde ya!
Libre Office 7.1.2.2
RMG
Mensajes: 3879
Registrado: Mar Nov 17, 2009 6:59 am
Ubicación: Valencia - España

Re: Cálculos en seguimiento de Stock.

Mensaje por RMG »

Hola,

Quizás algún proyecto del enlace te puede ayudar. Tienes sobre todo uno de gestión de stocks por almacen.

https://forum.openoffice.org/es/forum/v ... m.php?f=70

Saludos
OpenOffice 4.1.15 y LibreOffice 6.2.4.2 en W-10, y LibreOffice 4.1.6.2 en Open Suse 13.1(VirtualBox)
Avatar de Usuario
elchos
Mensajes: 4
Registrado: Jue Nov 11, 2021 11:38 pm

Re: Cálculos en seguimiento de Stock.

Mensaje por elchos »

Hola nuevamente (desde Argentina).
Bueno, antes que nada, durante todo este tiempo he seguido dándole vueltas al objetivo. Tomando distancias por momentos porque me resulta muchas veces relativizarlo y sentirme lejos como para darle mas claridad a lo que busco y no embarrar el proyecto.

Debo confesar y agradecer que Longi y RMG me han dado ese empujón para seguir revolviendo el canasto y buscar esa pieza del rompecabezas. La figurita difícil.
Confesar que me frustró porque no me fueron de gran ayuda, en su momento. Pero, en proyección, fue lo mas positivo.
Tuve que agarrar la pala, hacer el pozo desde cero y un poco más lejos hasta encontrar el agua (espero no ser mal interpretado. Todo me hizo entender más en profundidad lo que buscaba y como resolverlo. Darme cuenta que buscaba respuestas complejas a soluciones sencillas). Y confesar, también, que el planteo pretencioso inicial no era muy claro.

Resultados:
elchos escribió: Mié Mar 16, 2022 4:50 pm
PLANTEO DE LA SITUACION:

[*]-En el formulario de Stock esta la diferencia de Entrada y Salida en el mes. Y otros casilleros que desearía se rellenen con sus cálculos respectivos y, a su vez, se guarden en una tabla para una futura consulta.
Nota: No he logrado lo tachado

Pendientes a futuro:
- Lograr ingreso multiusuario
- Auto resguardo de la BD (bkp)
- Tal vez Login

Pero es más de lo que se esperaba y todos los beneficiarios están contentos.

Como aporte, he pasado 2 horas editando el contenido sensible de la información para poder subir la Base completa que va mas allá del post inicial. Esperando sea de utilidad y quedando atento si hay consultas al respecto.

https://mega.nz/file/GhYj3DLb#YyQo286G2 ... CvakxasNrU

Saludos y muchas gracias.
Libre Office 7.1.2.2
Responder