PDA

Ver la Versión Completa : Hacer Calculos en tiempo de ejecución.


dmagui
30-08-2005, 15:17:16
Buenos Dias:

Haber Tengo una duda de como hacer un calculo cuando este ejecutando mi aplicativo.

Lo que pasa es que tengo un campo en el DBGrid llamado costo_unitario pero lo que pasa es que existen a veces excepciones de que este costo_unitario lleve otro tipo de calculo para que sea el costo_unitario como por ejemplo

al costo_unitario multiplicarlo por valor del Kilo de cierto articulo.


estos valores varian y no pueden ser programados ya que deoenden del articulo.

Lo que yo quiero es que pueda hacer este calculo como podria hacer esto????



Gracias.:confused:

Hugorr
30-08-2005, 15:23:37
Buenas tardes,

La verdad es que no me entero muy bien del problema que tienes, podrias explicarlo mejor. Eso ayudaria bastante.;)

ContraVeneno
30-08-2005, 16:31:55
Lo que yo haría, sería grabar el valor_kilo en alguna tabla aparte o en algún campo de la tabla de artículos y luego cuando seleccione el artículo, tambien seleccionar su valor_kilo. Si el valor_kilo existe, entonces hago la operación.

para sqlserver sería algo así como:

select case ValorKilo
when ValorKilo is Null then PrecioUnitario
else (PrecioUnitario*ValorKilo) end PrecioUnitario
from artículos


No estoy seguro cuál es la función case para firebird, pero espero al menos poder aportar algo.

dmagui
30-08-2005, 20:24:30
Lo que yo haría, sería grabar el valor_kilo en alguna tabla aparte o en algún campo de la tabla de artículos y luego cuando seleccione el artículo, tambien seleccionar su valor_kilo. Si el valor_kilo existe, entonces hago la operación.

para sqlserver sería algo así como:

select case ValorKilo
when ValorKilo is Null then PrecioUnitario
else (PrecioUnitario*ValorKilo) end PrecioUnitario
from artículos


No estoy seguro cuál es la función case para firebird, pero espero al menos poder aportar algo.

Si te entiendo pero el valor del kilo fue un ejemplo ya que existen algunos factores por los que el valor unitario cambie y no esigual para todos los casos.

ContraVeneno
30-08-2005, 20:34:38
Entonces creo que mi opinión es muy parecida (o igual) a la de Hugorr.
:D

Saludos

lpmlpm
30-08-2005, 22:33:27
Desde donde lo veo, es muy sencillo si usas la instrucción Case de Firebird...

suponiendo que tienes un campo o un modo de saber como es que se calcula ese precio a segun el articulo que estas seleccionando lo resolverías mas o menos asi:

select
case
when TipoVenta= "Kilo" then Precio_Unitario * Cuantos_Kilos
when TipoVenta= "Onza" then PrecioUnitario * Cuantas_Onzas
when (TipoVenta= "Caja") and (Cuantas_Cajas > 12) then PrecioUnitario * Cuantas_Cajas * Porcentaje_Descuento
when TipoVenta= "Caja" then PrecioUnitario *Cuantas_Cajas
end as precio
from articulos



Como puedes ver en estoy poniendo las formulas de las condiciones que me interesaria controlar en la misma consulta y ahí puedes agregar las formulas que se te antojen o necesites en su momento... como puedes ver en una sola consulta puedes controlar todos los casos sin ningun problema, por ejemplo puedes ver que he puesto una condicion de que si se vende por caja y son mas de 12 cajas se aplica un descuento, sino solo se obtiene el precio a partir de cuantas cajas se compro...y asi puedo agregar todas las reglas de negocio que se me ocurrieran...

Puedes crear esta consulta en tiempo de ejecución con las formulas que necesites y no creo que tengas mayores problemas, generalmente esto es suficiente a menos de que tus formulas resulten ser algo asi como ecuaciones de doceavo grado con calculos de integrales y cosas similares con lo que entonces la recomendación sería que crees una DLL y que tu formula se calcule en una funcion dentro de esa DLL... ya nos dirás si es ese tu caso :)

Saludos