FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
||||
|
||||
Trigger o disparador en delphi-interbase
Hola amigos del club, tengo una consultita.
No soy muy bueno en base de datos; lo unico que he hecho son tablas simples y consultas a las mismas ya que hasta este año me toca en la universidad base de datos. Les comento mi problema: Tengo un programa pequeño y sencillo que posee un DBGrid conectado a un DataSource-> ibdataset->IBDataBase. Este dbgird muestra nada mas una serie de 10 datos, contyenidos en una tabla de Interbase. hasta aqui todo Ok. Anteriormente habia posteado un hilo donde preguntaba como hacer que3 la tabla se mostrara en "tiempo real" y claro esta que me refiero a que cuando se ingresara un nuevo registro inmediatamente la aplicacion mostrara el valor. Me dieron la solucion: un disparador o trigger. Pero resulta que no pude hacerlo porque no se como y ya busque en la web y no encuentro nada que yo entienda con mi bajo nivel de conocimientos. Ahora por favor, necesitaria que me indicaran como crear un trigger que al insertar un nuevo registro alertara de alguna forma a la aplicacion "cliente" y esta cerrara y habriera el dataset y asi refrescar el DBGrid. Gracias amigos y disculpen las molestias. Enviado desde mi IPad 6G () |
#2
|
||||
|
||||
Haz una búsqueda por post_event.
|
#3
|
||||
|
||||
Eres increible!!!
Hola Casimiro, gracias por responder ahora busco!
Un saludo, |
#4
|
||||
|
||||
Consultita
Estimado Casimiro, tengo este codigo:
Pero me da el error: Código:
Dynamic SQL Error. SQL error code = -206. Column unknown. NEW_CLIENTE. SQL Code: -206 IB Error Number: 335544569 |
#5
|
||||
|
||||
Hola
Y que es NEW_CLIENTE, esta en la tabla?. Saludos
__________________
Siempre Novato |
#6
|
||||
|
||||
Gracias
Hola Caral, te comento:
La tabla es asi:
Este es el link del documento que haye pero no me funciona. http://www.intitec.com/varios/Firebi...de_eventos.pdf |
#7
|
||||
|
||||
Unos detallles mas...
SOlamente para comentarles: utilizo C++builder XE e Interbase SMP 2009.
Saludos, |
#8
|
||||
|
||||
Hola
No he hecho de estos gatitos nunca, asi que no entiendo muy bien como funcionan. El concepto es relativamente sencillo. Se crea un disparador de evento y un gatito para la el evento. La pregunta es: Segun lo que entiendo lo que pretendes es que lo datos que insertas se vean de inmediato en el dbgrid. Si es asi, por que usar un gatito, es imperativo ?. Saludos
__________________
Siempre Novato |
#9
|
||||
|
||||
Gracias por responder Caral
Hola Caral; el asunto es así:
Imagina que tienes un servidor, un programa cliente para visualizar datos y otro programa por medio del cual una persona ingresa datos a la base de datos. Si la persona ingresa datos al servidor por medio del programa de ingreso los programas clientes deben de recibir una alerta para actualizar sus datos. Ese es el concepto, pero nada me funciona y ya me empiezo a sentir idiota |
#10
|
||||
|
||||
Hola
Yo tengo 6 ordenadores conectados a un servidor con firebird. No uso nada de eso y no he tenido nunca problemas. Como de esto no se lo que hago es simplemente una consulta a la tabla antes de hacer algun cambio, asi, si alguien ha modificado algo lo puedo solucionar antes. Tambien uso vistas, que son mas sencillas que los Tiggers, por lo menos para mi. Saludos
__________________
Siempre Novato |
#11
|
||||
|
||||
jaja la estaba arruinando
Hola amigos, gracias por su tiempo.
El error que cometia era este:
En el Tutorial aparecia con comillas dobles y bueno grave error pueden verificarlo: http://www.intitec.com/varios/Firebi...de_eventos.pdf Gracias por su tiempo y disculpen, la verdad siempre me ayuda muchísimo la gente de este foro. |
#12
|
||||
|
||||
Hola
Me alegro, ahora la pregunta: Que hace el tigger?, envia un mensage despues de insertado ?. Saludos
__________________
Siempre Novato |
#13
|
||||
|
||||
Puede ser
Cita:
Bueno la verdad nunca he usado vistas; pero lo que sucede es esto, cuando los datos son sumamente necesarios para la toma de decisiones deben ser en tiempo real. Si se coloca un timer que tenga como labor abrir y cerrar cada cierto tiempo los dataset para actualizar el DBGrid estarias cada minuto por ejemplo estarias abusando un poco del trafico de red, ademas: recibirias los datos un minuto despues de que el usuario de ingreso inserto los datos. Entonces para evitar esto, le dejo la tarea al servidor para que este le diga al programa "Ya me ingresaron datos" y el programa al recibir el evento habra y cierre el dichoso dataset y actualice en tiempo real. Espero haberme dado a entender ya que me "cuesta" (y mucho ) Gracias nuevamente y un saludo a todos. |
#14
|
||||
|
||||
Exacto
Cita:
Un saludo amigo (soy muuy novato). |
#15
|
||||
|
||||
Hola
Si, estoy claro en esto. Pero como siempre digo, es lo mismo de una que de otra manera. Si tienes que indicar con un if (como indica el ejemplo que pusiste) cada vez que se hace algun cambio y ademas recurrir al tigger, es lo mismo que hacer una sentencia sql. Bueno, me alegro que lo solucionaras, eso es lo importante. Saludos
__________________
Siempre Novato |
#16
|
||||
|
||||
Hola
Estoy tratando de entender la necesidad de un trigger en este caso y sigo sin entenderlo. La unica que se me ocurre es en el caso de un solo form (general). Esto pensando en que se tenga la tabla o dataset activo siempre. Si se trata de varios forms, no le veo utilidad. Se que genera un evento con el componente IBEvents, pero que ?, de que sirve ?, me puede actualizar el dataset, pero siempre y cuando este activo, de lo contrario o enviara un error o no hara nada. No lo entiendo. Me quedo con mi humilde IBQuery y Sql. Saludos
__________________
Siempre Novato |
#17
|
||||
|
||||
Vamos a ver...
Te comento, yo no uso mucho los ibquery, de hecho nunca los he utilizado porque utilizo el componente ibdataset el cual me provee de un selectsql y demás funciones.
Ahora bien: imaginemos que tu haces una aplicación con un ibquery>ibtransaction>ibdatabase etc. y bueno tu programa es un control de existencias de productos en stock de un almacén de repuestos para aeronaves de guerra rusa (de los MiG o que se yo ). En ese momento hay dos tenderos trabajando y ambos tienen la lista de misiles en existencia en el monitor., y llega un cliente afgano a una de las cajas de venta y pide: necesito dos misiles Hellfire y dos toneles con gelatina de napalm; acto seguido el tendero ve en su lista que en efecto aun tienen dos misiles. Los despacha junto con el napalm y listo se va ha cocinar. Ahora llega otro con el otro tendero y este tenía activa la ventana de misiles, le piden un misil Hellfire y este dice tener dos; en efecto no hay ya ninguno en existencia, si le da refrescar o cierra y habré la ventana de existencias mostraría cero en existencias pero al no haberlo hecho dice tener dos misiles. Si estas personas hubiesen tenido el famoso trigger que mencionamos aquí, inmediatamente al modificar u/o eliminar la existencia de dichos misiles en stock se hubiera disparado un evento el cual refrescaría todos los programas cliente y al llegar el segundo cliente le habrían dicho que ya no hay misiles en venta. Espero haberme dado a entender porque como dije anteriormente no es mi fuerte Un saludo. Enviado desde mi IPad 3G |
#18
|
||||
|
||||
Es que un programa que trabaja de esa forma está mal planteado. No se tiene una ventana abierta con el stock, ahí todo el rato, eso es algo inútil, sino que cuando se selecciona el artículo es cuando se muestra el stock de ese momento. Cierto que también puede irse en ese momento al baño y cuando regrese ya lo han vendido en otro terminal, pero al aceptar la línea es cuando debería de comprobar el stock de ese momento.
Lo de las dobles comillas en el evento... no me había fijado, tendré que corregirlo |
#19
|
||||
|
||||
Ups!!!
Cita:
Ahora con lo del documento: ups! lo siento, no sabia que eras el autor pero bueno en fin todos ganamos algo en este hilo y bueno si te sirve de algo: busque y encontre otros ejemplos con comillas y me seguia dando error todo esto ya me habia arrancado todo el cabello |
#20
|
||||
|
||||
No, en este caso no soy el autor, sólo recopilé la información de Erika Martínez (la autora) y lo publiqué en formato pdf.
Ya está cambiado, con comillas simples. |
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
Crear Trigger Interbase - Ayuda | BlueSteel | Firebird e Interbase | 6 | 27-11-2007 22:08:59 |
Controlar un Disparador al momento de cancelar o eliminar | JoanKa | Varios | 1 | 30-06-2006 18:00:36 |
Trigger en interbase | afarenas | Firebird e Interbase | 2 | 04-12-2004 15:35:04 |
problema con disparador FB | marrullas | Firebird e Interbase | 2 | 03-08-2004 23:16:32 |
Crear un Disparador Desde la Aplicacion | DANY | Firebird e Interbase | 0 | 12-11-2003 15:30:38 |
|