Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > SQL
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 30-01-2008
IVAND IVAND is offline
Miembro
 
Registrado: may 2003
Ubicación: ECUADOR
Posts: 523
Poder: 21
IVAND Va por buen camino
Formulas en registros de una tabla

Hola a todos

Tengo una pregunta espero me la puedan llegar a contestar

1.- Estoy elaborando un sistema de nomina-rol de pagos
2.- Base de datos firebird 1.5.4 y delphi 6

La idea de guardar la formula en un registro de la tabla X es porque hay veces las leyes cambian y es hai donde este concepto funciona a las mil maravillas Ejemplo

Campo : FORMULA
dato : T.VALOR*10/100

Entiendase por T.valor el alias de la tabla tal como lo escribiriamos en un select comun

Manana ese dato ya no sera t.valor si no t.valor2 ahi solamente yo cambiaria el dato en la tabla y no en mi aplicacion

Tabla 1
campo
key_u = Integer
Formula = Char(300)

Tabla 2
campo
key_u = integer
valor=numeric(15,2)
valor2=numeric(15,2)


Código SQL [-]
Select tabla1,t.formula,( como puedo mostrar el resultado de T.VALOR*10/100)

 from tabla1 ,tabla2 t
where tabla1.key_u=t.key_u

Espero me entiendan y de antemano gracias por su respuesta
__________________
IVAND
Responder Con Cita
  #2  
Antiguo 30-01-2008
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 25
Caral Va por buen camino
Hola
Algo asi:

Tabla 1
campo
key_u = Integer
Formula1 = numeric(2)
Formula2 = numeric(3)

Tabla 2
campo
key_u = integer
valor=numeric(15,2)
valor2=numeric(15,2)


Código SQL [-]
Select tabla2.Valor * tabla1.Formula1 / tabla1.Formula2
from tabla1 ,tabla2
where tabla1.key_u=t.key_u
Saludos
Responder Con Cita
  #3  
Antiguo 30-01-2008
Avatar de jachguate
jachguate jachguate is offline
Miembro
 
Registrado: may 2003
Ubicación: Guatemala
Posts: 6.254
Poder: 28
jachguate Va por buen camino
Si a lo que te referís es a la interpretación de la fórmula desde el propio select, me temo que no será posible de manera fácil.

Podrías hacer un UDF que reciba la fórmula, la interprete, se conecte de vuelta a la base de datos y obtenga los valores necesarios para evaluarla, pero lo veo complicado.

En cambio, si dejas esa intepretación a Delphi, podrías valerte de algún componente para evaluar expresiones, que hay variedad de estos. No se si en la sección de componentes del club, pero seguro en torry encontrás mas de uno.

Hasta luego.

__________________
Juan Antonio Castillo Hernández (jachguate)
Guía de Estilo | Etiqueta CODE | Búsca antes de preguntar | blog de jachguate
Responder Con Cita
  #4  
Antiguo 31-01-2008
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 29
Lepe Va por buen camino
¿Procedimientos almacenados de ejecución?

Te verás limitado al PSql, pero quizás te sirva. Si necesitas funciones que no están soportadas, puedes apoyarte en las UDFs, rfunc es una biblioteca buena, pero no la única.

Código SQL [-]
Select a, b, Porcentaje(10, 100)
from tabla

Porcentaje(10,100) sería dicho procedimiento. De memoria con bastantes errores, para hacerte una idea.
Código SQL [-]
create procedure Porcentaje(
  porcent numeric(10,2),
  cantidad numeric(10,2)
) 
returning Valor numeric(10,2)
as
begin 
   Valor := cantidad * (porcent / 100)
end

En el caso que necesites algo muy especial, puedes hacer un procedimiento almacenado de selección.

Cuando cambien las leyes, entras a la base de datos y modificas el interior del procedimiento almacenado.

Saludos
__________________
Si usted entendió mi comentario, contácteme y gustosamente,
se lo volveré a explicar hasta que no lo entienda, Gracias.

Última edición por Lepe fecha: 31-01-2008 a las 10:27:20.
Responder Con Cita
  #5  
Antiguo 31-01-2008
Avatar de jachguate
jachguate jachguate is offline
Miembro
 
Registrado: may 2003
Ubicación: Guatemala
Posts: 6.254
Poder: 28
jachguate Va por buen camino
Creo que hay confusión acá.

El asunto por el que IVAND pregunta no es si puede realizar ciertos cálculos. Es sobre si puede evaluar una fórmula almacenada como texto en un campo de la base de datos y devolver el resultado de dicha evaluación.

por ejemplo:

Código:
tabla
a         b         c         formula
========= ========= ========= ==============
1         2         3         'a+b+c'
2         4         6         'a*b-c'
3         6         9         'b/a+c'
Y haciendo un query tipo:

Código SQL [-]
select a, b, c, evaluar(formula), formula
  from tabla;

obtener un resultado como:

Código:
a         b         c         evaluar(formula) formula
========= ========= ========= ================ ============
1         2         3          6.0             'a+b+c'
2         4         6          2.0             'a*b-c'
3         6         9         11.0             'b/a+c'
Es lo que yo he entendido.
__________________
Juan Antonio Castillo Hernández (jachguate)
Guía de Estilo | Etiqueta CODE | Búsca antes de preguntar | blog de jachguate
Responder Con Cita
  #6  
Antiguo 31-01-2008
Avatar de Delphius
[Delphius] Delphius is offline
Miembro Premium
 
Registrado: jul 2004
Ubicación: Salta, Argentina
Posts: 5.582
Poder: 25
Delphius Va camino a la fama
Cita:
Empezado por jachguate Ver Mensaje
Creo que hay confusión acá.

El asunto por el que IVAND pregunta no es si puede realizar ciertos cálculos. Es sobre si puede evaluar una fórmula almacenada como texto en un campo de la base de datos y devolver el resultado de dicha evaluación.

por ejemplo:

Código:
tabla
a         b         c         formula
========= ========= ========= ==============
1         2         3         'a+b+c'
2         4         6         'a*b-c'
3         6         9         'b/a+c'
Y haciendo un query tipo:

Código SQL [-]select a, b, c, evaluar(formula), formula
from tabla;


obtener un resultado como:

Código:
a         b         c         evaluar(formula) formula
========= ========= ========= ================ ============
1         2         3          6.0             'a+b+c'
2         4         6          2.0             'a*b-c'
3         6         9         11.0             'b/a+c'
Es lo que yo he entendido.
Yo también entiendo al tema como tu, Jach.
Lo ideal es como dices, que busque un componente de tercero que realize esta tarea (si es que existe) o sino deberá hacerlo.

Saludos,
__________________
Delphius
[Guia de estilo][Buscar]
Responder Con Cita
  #7  
Antiguo 31-01-2008
IVAND IVAND is offline
Miembro
 
Registrado: may 2003
Ubicación: ECUADOR
Posts: 523
Poder: 21
IVAND Va por buen camino
Bueno que puedo decir , gracias a todos por su respuesta

La idea que tiene jachguate es justo la mia es evaluar una formula que esta en un campo texto , buscare en torry como un componente para evaluar formulas

Gracias nuevamente por su apoyo y si alguien ya lo ha echo me gustaria que compartiera su experiencia

Atentamente

Ivan Davila
__________________
IVAND
Responder Con Cita
  #8  
Antiguo 31-01-2008
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 29
Lepe Va por buen camino
Cita:
Empezado por jachguate Ver Mensaje
Es lo que yo he entendido.
Y yo también lo entendí así, pero no voy a repetir lo mismo que tú, por ello sugerí otra alternativa distinta; y sí, enfatizo distinta porque no quiere decir ni mejor ni peor.

Comenté las "rfunc" porque FB 1.5 carece de ciertas funciones integradas, y para realizar mi sugerencia, seguro necesitará de LPad, power, sqrt, etc.

Saludos
__________________
Si usted entendió mi comentario, contácteme y gustosamente,
se lo volveré a explicar hasta que no lo entienda, Gracias.
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Guardar en tabla registros Petolansa Varios 5 13-11-2007 00:51:28
tabla con o sin registros Fco Ibarra Tablas planas 3 13-01-2005 15:30:49
Seleccionar registros en una tabla, envio, e insercion en otra tabla!! EfrainSanmiguel Conexión con bases de datos 3 21-10-2004 01:12:43
Saber el Nº de registros de una tabla DarkByte Varios 5 22-09-2003 08:24:37
Registros a una Tabla Jose_Augusto SQL 1 07-08-2003 21:01:11


La franja horaria es GMT +2. Ahora son las 04:42:30.


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
Copyright 1996-2007 Club Delphi