Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Bases de datos > Firebird e Interbase
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 18-05-2015
pape19 pape19 is offline
Miembro
 
Registrado: jul 2010
Posts: 96
Poder: 14
pape19 Va por buen camino
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!
Responder Con Cita
  #2  
Antiguo 18-05-2015
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Cita:
Empezado por pape19 Ver Mensaje
...
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
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #3  
Antiguo 18-05-2015
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.038
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
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
Responder Con Cita
  #4  
Antiguo 18-05-2015
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Casi a la vez, pero ahora tiene dos opciones para restaurar el generador.

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

Saludos
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #5  
Antiguo 19-05-2015
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.038
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Cita:
Empezado por ecfisa Ver Mensaje
Casi a la vez, pero ahora tiene dos opciones para restaurar el generador.
( Y lo que me costó acostumbrarme al nuevo formato... , me gustaba mas el anterior )
Saludos
Sí, y ahora son 'sequence' en lugar de 'generator'
Responder Con Cita
  #6  
Antiguo 19-05-2015
Avatar de duilioisola
[duilioisola] duilioisola is offline
Miembro Premium
 
Registrado: ago 2007
Ubicación: Barcelona, España
Posts: 1.734
Poder: 20
duilioisola Es un diamante en brutoduilioisola Es un diamante en brutoduilioisola Es un diamante en bruto
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
Responder Con Cita
  #7  
Antiguo 21-05-2015
pape19 pape19 is offline
Miembro
 
Registrado: jul 2010
Posts: 96
Poder: 14
pape19 Va por buen camino
Unos genios los 3!!

Ya funciona. Muchísimas gracias muchachos!
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
¿como vaciar bases de datos intebase/firebird? JXJ Firebird e Interbase 11 05-07-2010 17:54:24
Evitar Triggers Al Vaciar Tabla [Firebird] LuCkY_007 Firebird e Interbase 8 21-03-2007 20:22:20
Vaciar cache de las tablas/querys Sick boy Conexión con bases de datos 0 29-09-2004 14:40:53
Vaciar tablas desde Stored Procedure Triton Firebird e Interbase 3 25-03-2004 20:48:48
Autonumericos en FireBird jmselesan Firebird e Interbase 2 18-09-2003 16:48:02


La franja horaria es GMT +2. Ahora son las 18:37: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
Copyright 1996-2007 Club Delphi