![]() |
![]() |
![]() |
![]() |
![]() |
FTP | ![]() |
![]() |
CCD | ![]() |
![]() |
Buscar | ![]() |
![]() |
Trucos | ![]() |
![]() |
Trabajo | ![]() |
![]() |
Foros | ![]() |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
![]() |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
||||
|
||||
Cómo usar variables en lugar de campos
Hola, tengo una duda con la sintaxis sql en firebird, concretamente para los triggers, aunque supongo que será igual para "store procedure".
Explico el problema con un ejemplo: Tabla....: tbSaldosApuntes Campos...: debe1,haber1,debe2,haber2,debe3,haber3, ... debe12,haber12 Trigger..:
Es sólo un ejemplo, pero más o menos es lo que quiero conseguir, no tener que repetir algo porque cambia sólo el número (de mes, en este caso). Creo que se entiende. Me parece recordar que en algún hilo se habló sobre ese tema y que era posible hacerlo, pero no lo he encontrado. Gracias y...
__________________
La otra guía de estilo | Búsquedas avanzadas | Etiquetas para código | Colabora mediante Paypal |
#2
|
|||
|
|||
Hola
A partir de firebird 2.0 tienes el execute statement yo lo utilizo para solucionar problemas parecido al que planteas
Saludos |
#3
|
||||
|
||||
Hola.
No se si te servirá esto, yo lo utilizo para saber la última línea de un detalle de una tabla cualquiera, según el parámetro que le paso.
Un saludo. |
#4
|
||||
|
||||
Muchísimas gracias, me habéis salvado de un montón de horas de trabajo repetitivo y pesado.
Todos los días se aprende algo, voy a probarlo ahora mismo... ![]()
__________________
La otra guía de estilo | Búsquedas avanzadas | Etiquetas para código | Colabora mediante Paypal |
#5
|
||||
|
||||
Aunque ya te han contestado ( y muy bien por cierto), yo suelo utilizar consultas de este tipo, que me han proporcionado muchas satisfacciones ante mis clientes.
Tienes meses, trimestres o lo que quieras. Lógicamente, hay que preparar las agrupaciones, filtrar por fechas, ... pero el esqueleto es más que aprovechable. Y dándole una vuelta, se pueden conseguir resultados muy chulos.
Un saludo
__________________
Cuando los grillos cantan, es que es de noche - viejo proverbio chino - |
#6
|
||||
|
||||
Gracias, muy interesante.
__________________
La otra guía de estilo | Búsquedas avanzadas | Etiquetas para código | Colabora mediante Paypal |
#7
|
||||
|
||||
Pues he estado probando y no me funciona, no sé si no vale para los triggers, aunque no da error ninguno, simplemente no se ejecuta.
He probado a guardar la sentencia creada en una tabla tbDebug y es correcta, así que no lo entiendo porque el código "normal" sí que funciona, lo he puesto al final, en comentario. ¿Podéis hacer una pruebecita con triggers en lugar de store procedure? Estoy usando firebird 2.1
__________________
La otra guía de estilo | Búsquedas avanzadas | Etiquetas para código | Colabora mediante Paypal |
#8
|
|||
|
|||
Hola
Creo que el problema es que no tratas los new como variables csql todo es varchar por ello debes convertir los new a varchar
Pruba y ya me diras La where no la entiendo pero eso ya es otro problema Saludos Panta |
#9
|
||||
|
||||
Sí, gracias, celades1, ya me he dado cuenta, parece que al execute statement hay que darle todo bien "mascadito".
No sé si será mejor crear un store procedure que reciba el mes y punto. Haré pruebas a ver qué es más eficiente.
__________________
La otra guía de estilo | Búsquedas avanzadas | Etiquetas para código | Colabora mediante Paypal |
#10
|
||||
|
||||
Hola a todos,
el problema qyue estás planteando no es el mismo que me ocurrió en esta ocasión ?? http://www.clubdelphi.com/foros/show...cute+statement Si no recuerdo mal, el problema es que el execute statement no puede resolver las variables new.campo y old.campo fuera del ámbito del store p. o del trigger. No estoy del todo seguro de si estamos itentando hacer lo mismo... ( es que es domingo por la tarde , haceos cargo ). Ya me direis, ... Saludos y suerte
__________________
Cuando los grillos cantan, es que es de noche - viejo proverbio chino - |
#11
|
||||
|
||||
Pues parece que sí, que es similar, el caso es que execute statement necesita la cadena completa, no se le puede pasar un campo para que obtenga el valor del mismo. En fin, no es muy práctico pero parece que va bien así:
__________________
La otra guía de estilo | Búsquedas avanzadas | Etiquetas para código | Colabora mediante Paypal |
![]() |
|
|
![]() |
||||
Tema | Autor | Foro | Respuestas | Último mensaje |
(SQL) Porqué usar parámetros en lugar de concatenar... | Neftali [Germán.Estévez] | La Taberna | 3 | 27-01-2010 16:12:16 |
Como bloquear registros sin usar campos persistentes | uper | MS SQL Server | 2 | 11-07-2007 18:10:06 |
usar variables de otras units | anubis | Varios | 7 | 16-04-2007 09:24:04 |
DBGrid con campos variables | mayte mtz | SQL | 9 | 15-11-2005 23:12:58 |
usar querys en lugar de tablas | maruenda | Varios | 4 | 18-02-2004 23:03:13 |
![]() |
|