Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Como implementar calculos en formulario, que pueden cambiar (similar a Excel) (https://www.clubdelphi.com/foros/showthread.php?t=91744)

JoAnCa 12-04-2017 15:26:13

Como implementar calculos en formulario, que pueden cambiar (similar a Excel)
 
Hola a todos
Quizas el titulo suene algo raro, pero ahora lo explico mejor.
Necesito que me orienten o me den alguna idea para solucionar el siguiente problema
Hice un software de análsiis económico para mi empresa, y uno de sus modulos es el calculo de determinados indicadores de eficiencia economica.
Resulta que he tenido que cambiarlo 2 veces, y este año va para una tercera, pues los indicadores los cambian todos los años (a veces hasta 2 veces), y por consiguiente tambien cambian las formulas, las cuales tengo que cambiar en el codigo

Lo que quiero hacer es que ese modulo sea configurable por el usuario, para que sea él mismo quien cambie los indicadores y las formulas correspondientes, segun cambien, al estilo de una hoja de calculo de excel.

La tabla de indicadores tiene las siguientes columnas:

Indicador Fila Plan Real %Cumplimiento Formula

- Por cada fila que no es calculada: El Real se obtiene de una tabla de la BD y el Plan se teclea
- Las demas filas son formulas matemáticas con otras filas

Lo de usar un control para la hoja de excel, serviria, pero no se como actualizarla desde la BD para el real, y para ubicar las formulas correspondientes:confused:
Como lo haria para que sea mas facil para el usuario ? :confused:

Neftali [Germán.Estévez] 12-04-2017 16:21:37

¿Porqué no almacenas también las fórmulas en la Base de Datos?
De esa forma, cuando cambie la fórmula sólo tienes que cambiar ese registro.

Hay paquetes gratuitos que te permiten evaluar fórmulas matemáticas y que incluyen la mayoría de operadores y funciones. De esa forma con la formula almacenada en Base de Datos, pasándole el "evaluador" puedes calcular los valores numéricos.

No se si me explico... :o

* Las JEDI creo recordar que tienen algún evaluador.
* Parse10 en ambarcadero.
* Recopilación de links
* Eval LIbrary
* Algunos evaluadores en Torry

newtron 12-04-2017 18:00:41

Cita:

Empezado por Neftali (Mensaje 515497)
No se si me explico... :o

Alto y claro. :D:D

JoAnCa 12-04-2017 18:11:52

Cita:

Empezado por Neftali (Mensaje 515497)
¿Porqué no almacenas también las fórmulas en la Base de Datos?
De esa forma, cuando cambie la fórmula sólo tienes que cambiar ese registro.

Hay paquetes gratuitos que te permiten evaluar fórmulas matemáticas y que incluyen la mayoría de operadores y funciones. De esa forma con la formula almacenada en Base de Datos, pasándole el "evaluador" puedes calcular los valores numéricos.

No se si me explico... :o

* Las JEDI creo recordar que tienen algún evaluador.
* Parse10 en ambarcadero.
* Recopilación de links
* Eval LIbrary
* Algunos evaluadores en Torry

Pues si, la formula la tengo almacenada, es la ultima columna que dije, lo q no se es como usarla
Revisare los evaluadores de formulas que me comentas para ver si logro lo que necesito

JoAnCa 12-04-2017 19:34:27

Revisando los evaluadores de formulas, un poco que me perdi en como poder usarlo, pues las formulas son del tipo:

Fila3 = Fila1 - Fila2
Fila9 = Fila3 + Fila4 + Fila5 - Fila6
Fila12 = (Fila11 - Fila10) * 0.0909

Fila1 = RegistroX_de_la_BD
Fila2 = RegistroY_de_la_BD
...

Lo que hay q hacer es reemplazar el contenido de cada Fila por su valor correspondiente, Fila# serian las variables para la formula

Vaya, que se me atrofiaron las neuronas en este analisis :o:confused:

JoAnCa 12-04-2017 19:43:10

Revisando los evaluadores de formulas, un poco que me perdi en como poder usarlo, pues las formulas son del tipo:

Fila3 = Fila1 - Fila2
Fila9 = Fila3 + Fila4 + Fila5 - Fila6
Fila12 = (Fila11 - Fila10) * 0.0909

Fila1 = RegistroX_de_la_BD
Fila2 = RegistroY_de_la_BD
...

Lo que hay q hacer es reemplazar el contenido de cada Fila por su valor correspondiente, Fila# serian las variables para la formula

Vaya, que se me atrofiaron las neuronas en este analisis :o:confused:

WHILENOTEOF 12-04-2017 19:44:56

A través de una búsqueda de los enlaces que aparecen en CodeCentral con la palabra parser he dado con este Parser Components , que tiene buena pinta y además lo tienen actualizado a las últimas versiones de Delphi (Delphi 10.1 Berlin), por lo visto vienen con código fuente. No deja de sorprenderme la cantidad de "joyas" que uno aún no ha descubierto en relación a Delphi. El componente Parser10 que está en CodeCentral está un poco anticuado (2001), pero hace referencia a un artículo de una revista que yo adoraba The Delphi Magazine. Es increíble la cantidad de conocimiento y código que se generó en esa década alrededor de Delphi.

mamcx 12-04-2017 20:04:03

Cita:

Empezado por JoAnCa (Mensaje 515514)
Revisando los evaluadores de formulas, un poco que me perdi en como poder usarlo, pues las formulas son del tipo:

Fila3 = Fila1 - Fila2
Fila9 = Fila3 + Fila4 + Fila5 - Fila6
Fila12 = (Fila11 - Fila10) * 0.0909

Fila1 = RegistroX_de_la_BD
Fila2 = RegistroY_de_la_BD

Lo mas simple, y si ademas es para que el usuario lo opere, es que uses un control ya realizado:

http://www.tmssoftware.com/site/aspgrid2.asp
https://www.devexpress.com/Products/VCL/ExSpreadSheet/

----
Hacer esto programaticamente no es tan dificil, pero requiere un trabajo algo extenso. Antes de gastarle tiempo, quiero saber si usar un control ya hecho es suficiente!

JoAnCa 12-04-2017 21:14:24

Cita:

Empezado por mamcx (Mensaje 515519)
Lo mas simple, y si ademas es para que el usuario lo opere, es que uses un control ya realizado:

http://www.tmssoftware.com/site/aspgrid2.asp
https://www.devexpress.com/Products/VCL/ExSpreadSheet/

----
Hacer esto programaticamente no es tan dificil, pero requiere un trabajo algo extenso. Antes de gastarle tiempo, quiero saber si usar un control ya hecho es suficiente!

Pues si, con un control ya hecho es suficiente, mientras resuelva el problema
El objetivo es que el propio usuario vaya a la configuracion y cambie las formulas, y despues en los indicadores se calculen correctamente

ya estoy revisando los enlaces q me pones


La franja horaria es GMT +2. Ahora son las 15:47:56.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi