PDA

Ver la Versión Completa : Reiniciar el Generador


cmgenny
26-04-2004, 06:54:37
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

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


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í...

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
lo hice así...

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:

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
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
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
@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
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.

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