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)
-   -   Firebird + Vaciar tablas y reiniciar autonuméricos (https://www.clubdelphi.com/foros/showthread.php?t=88309)

pape19 18-05-2015 23:24:57

Firebird + Vaciar tablas y reiniciar autonuméricos
 
Buenas tardes foreros. Hace mucho no andaba por aquí.

Me encuentro en el caso, donde tengo que cada cierta cantidad de días, vaciar un par de tablas(master-detail) de la base de datos .fdb; y reiniciar los campos autonuméricos de las mismas a 0.

Conservar estos generadores, y triggers de ambas tablas, porsupuesto.

Hay alguna forma de vaciar las tablas por código desde delphi; o bien, lo que conviene es eliminar tales tablas, y utilizar los scripts para recrear estas tablas?.

Saludos!

ecfisa 18-05-2015 23:53:08

Cita:

Empezado por pape19 (Mensaje 492251)
...
Hay alguna forma de vaciar las tablas por código desde delphi; o bien, lo que conviene es eliminar tales tablas, y utilizar los scripts para recrear estas tablas?.

No sé que componentes usas para conectarte, pero con IBX, podrías hacer:
Código Delphi [-]
procedure ExecCommand(const Command: string; qy: TIBQuery);
begin
  qy.Close;
  qy.SQL.Text := Command;
  qy.ExecSQL;
  qy.Transaction.CommitRetaining;
end;

LLamada de ejemplo:
Código Delphi [-]
procedure TForm1.Button1Click(Sender: TObject);
begin
  ExecCommand('DELETE FROM DETALLE', IBQuery1);
  ExecCommand('DELETE FROM MAESTRO', IBQuery1);
  ExecCommand('ALTER SEQUENCE G_DETALLE RESTART WITH 0', IBQuery1);
  ExecCommand('ALTER SEQUENCE G_MAESTRO RESTART WITH 0', IBQuery1);
end;

Saludos :)

Casimiro Notevi 18-05-2015 23:54:17

Eliminar datos de las tablas:
Código SQL [-]
delete from tabla
Poner a cero un generador:
Código SQL [-]
set generator nombregenerador to 0;


EDITO: se adelantó ecfisa :)

ecfisa 18-05-2015 23:59:14

Casi a la vez, pero ahora tiene dos opciones para restaurar el generador. ;)

( Y lo que me costó acostumbrarme al nuevo formato... :o, me gustaba mas el anterior )

Saludos :)

Casimiro Notevi 19-05-2015 00:02:44

Cita:

Empezado por ecfisa (Mensaje 492259)
Casi a la vez, pero ahora tiene dos opciones para restaurar el generador. ;)
( Y lo que me costó acostumbrarme al nuevo formato... :o, me gustaba mas el anterior )
Saludos :)

Sí, y ahora son 'sequence' en lugar de 'generator' :)

duilioisola 19-05-2015 10:01:02

Cita:

Sí, y ahora son 'sequence' en lugar de 'generator'
También puedes hacer esto desde un procedimiento/trigger o una consulta SQL...

Código SQL [-]
select gen_id(NOMBRE_CONTADOR, -1 * gen_id(NOMBRE_CONTADOR, 0)) from rdb$database

o

Código SQL [-]
declare variable generador integer;
begin
    generador = gen_id(NOMBRE_CONTADOR, -1 * gen_id(NOMBRE_CONTADOR, 0));
    ...
end

pape19 21-05-2015 23:26:29

Unos genios los 3!!

Ya funciona. Muchísimas gracias muchachos!


La franja horaria es GMT +2. Ahora son las 04:40:00.

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