Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Firebird e Interbase (https://www.clubdelphi.com/foros/forumdisplay.php?f=19)
-   -   Reiniciar el Generador (https://www.clubdelphi.com/foros/showthread.php?t=9510)

cmgenny 26-04-2004 06:54:37

Reiniciar el Generador
 
Holas

Mi base de datos esta compuesta por 6 tablas tres de las cuales utilizan generadores, lo que quiero es poner el valor del generador otravez en 0 para que empiece otra vez. Borro todos los datos pero los generadores siguen en la secuencia que se quedaron.

Muchas gracias

utilizo Interbase 7

jachguate 26-04-2004 07:03:34

set generator gen_name to int_value;

Hasta luego

;)

cmgenny 26-04-2004 07:49:20

No entiendo bien
 
No entiendo

Que quieres que haga exactamente ponga esa linea de codigo dentro del alter table o no se bien por que ella sola no va a funcionar y disculpa que te pregunte tanto es que me gustan que me expliquen con detalles gracias

jachguate 26-04-2004 09:13:18

hola cmgenny. Lo que te he dado es una instrucción SQL válida (al menos en interbase 6). Podes ejecutarla directamente en ibconsole, en isql, o ponerla en la propiedad SQL de un TQuery y lanzarla a la base de datos.

Si queres mas detalles, te recomiendo leer la documentación disponible de la base de datos.

Hasta luego.

;)

BlueSteel 13-07-2006 17:10:07

Hola.. justo estaba buscando algo por el estilo... funciona super bien desde el IBExpert... pero quisiera ejecutarla desde delphi... pero pasando el valor x, la idea es volverla al numero que yo quiera....

para tratar de cambiarle el valor estoy usando lo siguiente

IBQuery
IBTransaction

y el codigo es el siguiente

Código Delphi [-]
IBQ_Edit.SQL.Clear;
IBQ_Edit.SQL.Add('Set Generator "G_Orden_Numero" to Var1');
IBQ_Edit.Params[0].AsInteger := StrToInt(pOrden.Text);
IBQ_Edit.ExecSQL;
IBT_Edit.Commit;

alguien sabe como hacerlo...

Editado:::

lo hice así...
Código Delphi [-]
IBQ_Edit.SQL.Clear;
IBQ_Edit.SQL.Add('Set Generator g_orden_numero to '+QuotedStr(pOrden.Text));
IBQ_Edit.ExecSQL;
IBT_Edit.Commit;

pero tengo un error.. ya que no se como pasarle el dato de str a integer ???

nemesio 14-07-2006 06:34:23

Pues utiliza bien los parámetros. Para indicarle al sql que una variable es parámetro se colocan dos puntos antes de la misma. :Var1.

Suerte.

aledieb 14-07-2006 18:24:29

Cita:

Empezado por BlueSteel
lo hice así...
Código Delphi [-]
IBQ_Edit.SQL.Clear;
IBQ_Edit.SQL.Add('Set Generator g_orden_numero to '+QuotedStr(pOrden.Text));
IBQ_Edit.ExecSQL;
IBT_Edit.Commit;

pero tengo un error.. ya que no se como pasarle el dato de str a integer ???

Usa lo siguiente:
Código Delphi [-]
IBQ_Edit.SQL.Clear;
IBQ_Edit.SQL.Add('Set Generator g_orden_numero to '+pOrden.Text);
IBQ_Edit.ExecSQL;
IBT_Edit.Commit;

BlueSteel 18-07-2006 15:33:19

pero se supone que el generador es de tipo numerico.... entonces el dato que le estoy pasando es una cadena string... por lo tanto no son compatibles... :confused:

aledieb 18-07-2006 18:31:06

Cita:

Empezado por BlueSteel
pero se supone que el generador es de tipo numerico.... entonces el dato que le estoy pasando es una cadena string... por lo tanto no son compatibles... :confused:

Si, pero lo que estas haciendo es crear un string con la instrucción SQL, en el query te quedaria asi:

set Generator g_orden_numero to 10

Es como si escribieras la orden en un entorno para sql a mano, no se si me explico bien.

BlueSteel 19-07-2006 18:56:44

ya me funciono.. esta ok.. muchas gracias

peccatum 10-12-2007 04:25:52

Hola...

¿no es posible reiniciar el generador desde un trigger? lo he intentado pero me da error de "invalid token" con la cadena 'set' de "set generator ...."

scorpion-salta 31-01-2011 06:49:11

Cita:

Empezado por peccatum (Mensaje 251480)
Hola...

¿no es posible reiniciar el generador desde un trigger? lo he intentado pero me da error de "invalid token" con la cadena 'set' de "set generator ...."

si se puede, la solucion es en el codigo que te da error, hacer lo siguiente:

execute statment 'set generator nom_seq restart with 0;';

jachguate 31-01-2011 19:36:53

@scorpion: no se si aún @peccatum está esperando respuesta luego de 3 años... de cualquier manera, el hecho de querer re-iniciar un generador desde un trigger no huele bien, creo que habría que revisar ese diseño. :)

scorpion-salta 31-01-2011 23:53:27

Cita:

Empezado por jachguate (Mensaje 389445)
@scorpion: no se si aún @peccatum está esperando respuesta luego de 3 años... de cualquier manera, el hecho de querer re-iniciar un generador desde un trigger no huele bien, creo que habría que revisar ese diseño. :)

Estoy de acuerdo con vos, en que es tarde, pero bueno, a lo mejor alguien tenia el mismo problema, como yo hace un par de dias, y lo de tener que reiniciar secuencias, es cuestion de gustos, algunos lo hacen en la aplicacion y otros en la base de datos, o directamente se trata de evitar esto.

En mi caso, una base sencilla, en la cual necesitaba un contador secuencial que se reinicie cada cierta condicion. Y me parecio mejor incorporarlo en la base de datos, ya que es una aplicacion sencilla de un usuario no mas. La otra solucion era hacerlo en la aplicacion. Pero me intereso hacer cosas con secuencias y aprovechar un poco mas la potencia de este motor.

Gallosuarez 01-02-2011 21:16:57

Resetear Generador ...
 
cmgenny:

No se si ya hayas resuelto tu problema.... Pero aquí te dejo un código que hice para resetear un generador a cero... Lo utilicé ya hace algunos años para un sistema de Control Escolar que hice. Lo bueno de este código es que lo puedes utilizar dentro de un procedimiento almacenado o corriendo la sentencia SQL desde cualquier lenguaje de programación.
Código SQL [-]
SELECT GEN_ID(CTRL_SEP_GEN, (SELECT (GEN_ID(CTRL_SEP_GEN, 0) * -1)
      FROM RDB$DATABASE)) FROM RDB$DATABASE
En este caso, mi generador es CTRL_SEP_GEN (sustituye este valor por el generador que quieres resetear. Funciona mas o menos asi: simplemente le resto su mismo valor.

Saludos
Gerardo Suárez Trejo


La franja horaria es GMT +2. Ahora son las 10:40:27.

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