FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
|
#1
|
|||
|
|||
Crear campo consecutivo por medio de codigo
Tengo un problema acerca de como generar un campo consecutivo por medio de codigo.Lo que quiero hacer es que dependiendo de las veces que el usuario presente un cuestionario se incremente un campo.Por ejemplo:
cuestionario para vigilante..presentado el 28 de septiembre..campo consecutivo=1 Cuestionario para vigilante..presentado el 23 de octubre......campo consecutivo=2 cuestionario para vigilante..presentado el 3 de noviembre...campo consecutivo=3 Para despues guardarlo en la bd.Espero haberme dado a entender |
#2
|
||||
|
||||
Hola Elite237, puedes hacer que tu campo sea autoincremental, así no haces nada por codigo, ya que se generara solito.
Ahora otra forma sería que hicieras una consulta obteniendo el Max de tu campo.
Saluditos
__________________
Disfruten cada minuto de su vida a lado de sus seres queridos como si fuese el ultimo, uno nunca sabe lo que puede pasar. |
#3
|
||||
|
||||
Hola Elite237,
Déjame ver si comprendo tu problema. ¿Deseas que cada vez que alguien presente su cuestionario se actualice algún campo (de alguna tabla) para llevar el registro de los test que ha realizado? Si es eso, lo mejor sería crear un trigger AFTER INSERT. Según recuerdo, tu haces uso de Firebird. Un trigger podría ser así:
La explicación es como sigue: 1. ACTUALIZA_CUESTIONARIOS es el nombre del trigger. 2. PRESENTACIONES es el nombre de la tabla en donde se procede a llevar el registro de cada presentación. De este modo cada ver que se inserte un nuevo registro en esta tabla (por ello el AFERT INSERT), se dispara el trigger ejecutando las sentencias correspondiente. 3. Supongamos que existe una tabla HISTORICO_CUETIONARIOS en donde se lleva el manejo de algunas estadísticas, Entre sus campos existe uno llamado CANTIDAD, y se lo emplea para llevar la cuenta de cuestionarios. Por ello, se lanza una instrucción UPDATE que incremente dicho valor. 4. Como nos estamos refiriendo a una persona en particular, debemos indicar que sólo aplice dicha actualización a un registro en particular. Por ello se añade la cláusula WHERE indicandole que sólo aplique los cambios a aquel registro cuyo campo CODIGO sea igual al del campo CODIGO del registro previamente insertado en la tabla PRESENTACIONES. Por ello, en el WHERE viene acompañado un NEW.CODIGO. Si no es eso lo que buscas, por favor te pediría que explicases más profundamente el problema. Saludos, |
#4
|
|||
|
|||
Asi es delphius, acertaste en lo que pretendo hacer.El guardado de los registros se haria asi:
evaluacion version usuario fecha resultado consecutivo vigilante 1 pedro 3/11/2008 45 1 Del cuestionario, yo solo guardo lo que tengo en 3 combobox..fecha,usuario,evaluacion...el resultado lo guardo con una suma de todos los valores de cada respuesta que selecciono el usuario.Y el consecutivo es lo que tengo duda de como guardarlo, ya que tengo que checar si es el mismo usuario el que esta contestando, pues que genere en el campo el numero consecutivo,osea 2. Y en caso de que lo vuelva a presentar quedaria asi: evaluacion version usuario fecha resultado consecutivo vigilante 1 pedro 4/11/2008 50 2 Uso Firebird,entonces Delphius con el trigger que me dices ya quedaria resuelto lo que acabo de explicar?Espero haberme dado a entender |
#5
|
|||
|
|||
Error en Trigger
Acaco de tratar de implementar el trigger en firebird pero me manda el siguiente error:
el trigger lo deje asi:
|
#6
|
||||
|
||||
Bueno Elite237, un trigger como ese es lo que necesitarías.
Por otro lado, creo que sería mejor que analizaras bien la estructura y el fin de uso de la tabla que mencionas. Por el modo en como describes tu situación, me da a entender que pisas los datos. ¿Es eso lo que buscas? O por el contrario, necesitas llevar un registro de las presentaciones. ¿Entiendes a lo que me refiero? Digamos que una persona presente su examen o cuestionario hoy. En forma breve veríamos algo así: IDPersona - Fecha - CONSECUTIVO 1 - 04/11/2008 - 1 Hagamos de cuenta que tras una semana vuelve a presentar el examen. Si pisamos los datos vemos esto: 1 - 11/11/2008 - 2 Uno lee el campo CONSECUTIVO y se pregunta: "Veo que hizo el exámen dos veces, pero cuando y que resultado obtuvo en la primera oportunidad?" Entiendes a lo que quiero llegar: ¿Necesitas pisar los datos, o llevar un histórico de cada vez que alguien presente un examen? Y aquí, hay otra cuestión: si tenemos el histórico, aquel campo CONSECUTIVO está demás. ¿Porqué? Porque Este valor puede obtenerse consultando todos los exámenes de la persona. A menos de que CONSECUTIVO tenga otro significado (y uso), es muy posible que esté demás. Deberías analizar objetivamente el diseño de tus tablas. Hay algo allí que me está indicando que tu diseño no responde a tus objetivos. Además estoy viendo que guardas el "Nombre" de la persona, ¿No sería adecuado guardar el ID que corresponde a dicha persona? Y otra pregunta interesante ¿Cómo sabes a que examen o tipo de examen, y sus respuestas ha dado la persona en cada una de sus presentaciones? No veo como de dicha tabla, con dichos campos puedas recuperar dicha información. Analiza bien el tema Elite237, hay algo que se te está escapando. Saludos, |
#7
|
||||
|
||||
Cita:
En vez de FROM debería ser FOR. Y las sentencias a ejecutar deben finalizar con punto y coma (;). Bueno eso veo. Saludos, |
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
crear un scrip desde codigo con campo blob | Lupita | Firebird e Interbase | 7 | 20-07-2007 21:41:55 |
Crear componente por medio de codigo | Markoz | Firebird e Interbase | 2 | 24-05-2006 21:46:13 |
Como crear un campo que sea un consecutivo? | JuanErasmo | Firebird e Interbase | 5 | 10-11-2005 13:45:34 |
Como crear un consecutivo. | JCarlos | Varios | 1 | 03-05-2005 22:31:34 |
Como crear un campo en una tabla a traves de código | URBANO | Conexión con bases de datos | 1 | 16-03-2004 10:39:06 |
|