Almacenar y usar consultas vistas y procedimientos en campos blob
Anoche entre una resaca de vodka y la indigestión de una cena opulenta :D se me ocurrio la idea de poder almacenar en un campo blob (memo) el texto de una consulta (vista ó procedimiento) para ejecutarlo en ciertos campos "calculados". me explico (que dolor de cabeza...)
Supongamos una aplicaciíon de Nómina, la misma usará conceptos de asignaciones y deducciones que deberán ser calculados por formulas que deberá personalizar el cliente, por ejem: La siguiente formula: SalarioDiario = SalarioMes / 30 Se expresaria como:
Esa fórmula se podría almacenar en un campo memo y al ejecutar un procedimiento generico: (ojo el código es para referencia no se supone que funcione)
Claro todo desde dentro de firebird (2.0.1) con procedimientos almacenados y eso, la intención es permitir al usuario ejecutar algunos cálculos especiales que arrojen resultados dentro de otras consultas. :confused: Ni yo entiendo bien el último parrafo. :D En resumidas: ¿ Se puede almacenar y ejecutar codigo SQL dentro de campos memo en una base de datos firebird ? |
Hola
Dentro de campos memo (blob en el caso de Firebird), puedes almacenar hasta 32 Gb de cualquier tipo de dato (texto, imagenes, archivos exe, etc). Si la idea es almacenar un texto ( en este caso una sentencia SQL) creo que no habría problemas, mientras la extraigas desde tu programa y la ejecutes (con un IBQuery por ejemplo). Lo que no puedes hacer, hasta donde yo se, es ejecutar la consulta dentro del campo blob. Saludos! |
Cita:
Pero el problema está en qué es lo que devuelve esa FORMULA, porque solo con ejecutarla dentro del procedimiento, no creo que sirva de mucho...no se. ¿Esa FORMULA devuelve siempre 1 campo o devuelve más de 1? ¿de que tipo es el dato devuelto? Me acabo de dar cuenta que la sentencia EXECUTE STATEMENT solo funciona con <string>, con lo que si falla, (porque no lo he comprobado) deberias pasar de blob a string (creo). |
Hola, yo trabajo con un propducto de nómina, muy excelente
es un front end muy inetresante.... sabes lo que se me ocurre.... que en vez de almacecanr funciones o procedimientos almacenados, guardes código objet pascal. este codigo sera ejecutado en tiempo de ejecucuón, por ahi peudes seguir la linea si no levas muy avanzado el proyecto..... el motor de cálculo de la aplicación que te comento, contine su propio lenhuaje de programación para los conceptos de cálculo (sueldo, compensación, bonos, impuesto, etc) y aparte tiene algunas funciones apra poder ejecutar sentencias y procedimientos almacenados... |
me doy cuenta que no contesto a tu pregunta, jejejeje, suele pasar a veces
te adjnot el link http://www.remobjects.com/page.asp?id={9A30A672-62C8-4131-BA89-EEBBE7E302E6} |
Gracias a todos por responder, en principio aclarar que no es un proyecto en desarrollo, sino más bien una idea para uno que estoy planificando, de hecho no es de nómina sino de cobranzas ;), pero la idea de poder automatizar algo del código dentro de la base de datos me simplificaría mucho la vida, de hecho pensando más en frio sería mas facil implementar la sujerencia de martinzcr .
También voy a probar la sujerencia de defcon1_es pero por lo que dice debo usar campos Char, lo que limitará mucho la capacidad de trabajo. En cuanto a Cita:
En cuanto al código en object pascal la verdad excede bastante la idea inicial, recuerdo haber usado un componente JvInterpreter (bastante potente) pero, por ahora "exploro" las capacidades del firebird... Acabo de ver el link de Paoti, luce muy prometedor, a ver si con algo más de tiempo los descargo y pruebo. Gracias de nuevo. |
Esto Sí funciona: :eek:
La formula:
Calcular el 50% de descuento :D Ahora tengo que ver que puedo hacer con eso... :cool: Con campos BLOB no funciona. |
La franja horaria es GMT +2. Ahora son las 16:35:37. |
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