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)
-   -   Vaciar tablas con un script. (https://www.clubdelphi.com/foros/showthread.php?t=92342)

lbidi 04-10-2017 16:28:23

Vaciar tablas con un script.
 
Estimados estoy haciendo mis primeras armas con FB y Firedac.

Tengo un procedimiento para limpiar las tablas que voy generando ya que voy importando datos desde otra BD.

Mi script para limpiar las tablas es el siguiente.
Código Delphi [-]
    FDScript.SQLScripts.Clear;
    FDScript.SQLScripts.Add.SQL.Add( 'Delete from Articulos;' );
    FDScript.SQLScripts.Add.SQL.Add( 'Delete from Cabezal;' );
    FDScript.SQLScripts.Add.SQL.Add( 'Delete from Proveedores;');
    FDScript.SQLScripts.Add.SQL.Add( 'Delete from Stock;');
    FDScript.ValidateAll;
    FDScript.ExecuteAll;
    FDConnection.Commit;
Antes lo hacia de esta manera por cada tabla y si me borraba los registros.
Código Delphi [-]
    FD_QueryFB.SQL.Text := 'Delete from Articulos';
    FD_QueryFB.ExecSQL;
pero me parecia muy largo el procedimiento dato que voy a tener mas de 50 tablas.

El asunto es que no me borra los registros. De que manera podria ejecutar un script para ir borrando los registros de cada tabla y asi seguir probando la migracion ?

Gracias.

roman 04-10-2017 18:13:39

A ver, no conozco del tema pero intenta así:

Código Delphi [-]
FDScript.SQLScripts.Clear;

with FDScript.SQLScripts.Add do
begin
  SQL.Add( 'Delete from Articulos;' );
  SQL.Add( 'Delete from Cabezal;' );
  SQL.Add( 'Delete from Proveedores;');
  SQL.Add( 'Delete from Stock;');
end;

FDScript.ValidateAll;
FDScript.ExecuteAll;
FDConnection.Commit;

LineComment Saludos

lbidi 04-10-2017 18:20:14

Gracias roman por la respuesta, pero no veo la diferencia con el codigo que he posteado. Me parece si no estoy equivocado que solo lo has agrupado en un WITH, pienso bien ???

roman 04-10-2017 18:28:18

Aparentemente. Pero, al parecer, TFDScript es un componente que almacena varios scripts y cada script puede contener varios comandos. Entonces, cada vez que usas FDScript.SQLScripts.Add, obtienes un nuevo script de manera que, al final, obtienes muchos scripts cada uno con un sólo comando.

Al englobarlo en el with, usas un sólo script convarios comandos.

LineComment Saludos

movorack 04-10-2017 18:45:48

Hola, te recomiendo leas la documentación para que tengas mas claro el funcionamiento de ese componente.

lbidi 04-10-2017 19:59:26

Gracias a ambos.

Sigo investigando y aprendiendo.

Saludos.

roman 04-10-2017 20:04:00

Pero, ¿te funcionó o no?

LineComment Saludos

lbidi 04-10-2017 20:12:20

Perdon por no responder en seguida.

Si , funciono perfectamente, gracias roman !!!

Abrazo


La franja horaria es GMT +2. Ahora son las 04:12:34.

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