Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Tablas planas (https://www.clubdelphi.com/foros/forumdisplay.php?f=20)
-   -   Eliminar Tablas y tamaño en Base de datos (https://www.clubdelphi.com/foros/showthread.php?t=44836)

carlosegs11 15-06-2007 18:33:41

Eliminar Tablas y tamaño en Base de datos
 
Hola,

Tengo una base de datos Access 2003. A medida que voy insertando tablas por lógica el tamaño de la base de datos va aumentando.

El problema esta en que cuando yo elimino todas las tablas de la base de datos y la dejo en blanco, ella conserva el tamaño de cuando tenía todas las tablas.

Se debe borrar algo o como hago para que la base de datos tenga el peso verdadero en Kb?

Espero haberme explicado.

Muchas gracias.

Carlos E. :confused:

cHackAll 15-06-2007 19:28:23

Ok
 
Ok, dale: Heramientas, Utilidades de la base de datos, Compactar y reparar base de datos...

Se que se puede por codigo pero no lo he chKd0.

Saludos.

carlosegs11 15-06-2007 23:51:45

Muchas gracias. Funcionó bien. Que bueno tenerlo por código desde delphi. :rolleyes:

cHackAll 17-06-2007 01:01:50

Para servirte
 
Cita:

Empezado por carlosegs11
...Que bueno tenerlo por código desde delphi...

No fue sarcasmo verdad? si necesitas el código nos avisas para ver que se puede hacer!

Saludos.

courtois 09-07-2007 03:55:03

Aqui hay una alternativa para compactar un mdb
Código Delphi [-]
function PackMdbFile(_Name, _pass: String; Verbose:Boolean): Boolean;
var
   JE : TJetEngine; //requiere importar la biblioteca de tipos MS Jet & Replications Objects
   mdbDest,ConStrOri, ConStrDest: WideString;
   sizei,sizef:Real;
begin
   sizei:=FileSizeByName(_Name)/1024;
   //la base de datos no se compacta sobre si misma sino creauna nueva, compactada
   //por lo cual definiremos como se llamará esa base de datos
   mdbDest:=ExtractFilePath(_name)+'\tmp~'+ExtractFileName(_Name);
   ConStrOri:= 'Provider=Microsoft.Jet.OLEDB.4.0;Password="";User ID=Admin;Data Source='+
                _Name+';Mode=Share Deny None;Extended Properties="";Jet OLEDB:System'+
               ' database="";Jet OLEDB:Registry Path="";Jet OLEDB:Database Password='+_pass+
               ';Jet OLEDB:Engine Type=5;Jet OLEDB:Database Locking Mode=1;Jet OLEDB:Global'+
               ' Partial Bulk Ops=2;Jet OLEDB:Global Bulk Transactions=1;Jet OLEDB:New '+
               'Database Password="";Jet OLEDB:Create System Database=False;Jet OLEDB:'+
               'Encrypt Database=False;Jet OLEDB:Don''t Copy Locale on Compact=False;Jet'+
               ' OLEDB:Compact Without Replica Repair=False;Jet OLEDB:SFP=False';

   ConStrDest:= 'Provider=Microsoft.Jet.OLEDB.4.0;Password="";User ID=Admin;Data Source='+
                 mdbDest+';Mode=Share Deny None;Extended Properties="";Jet OLEDB:System'+
                ' database="";Jet OLEDB:Registry Path="";Jet OLEDB:Database Password='+_pass+
                ';Jet OLEDB:Engine Type=5;Jet OLEDB:Database Locking Mode=1;Jet OLEDB:Global'+
                ' Partial Bulk Ops=2;Jet OLEDB:Global Bulk Transactions=1;Jet OLEDB:New '+
                'Database Password="";Jet OLEDB:Create System Database=False;Jet OLEDB:'+
                'Encrypt Database=False;Jet OLEDB:Don''t Copy Locale on Compact=False;Jet'+
                ' OLEDB:Compact Without Replica Repair=False;Jet OLEDB:SFP=False';
   //verificamos si la base de datos destino existe, si es asi, la eliminamos
   if FileExists(mdbDest) then DeleteFile(mdbDest);
   JE:= TJetEngine.Create(Nil);
   try
      try
        //se comprime la base de datos original en la destino, ojo, la base de datos
        //original no debe estar en uso por nadie mas
        JE.CompactDatabase(ConStrOri, ConStrDest);
        sizef:=FileSizeByName(mdbDest)/1024;
        //eliminamos la base de datos original, o mejor, le cambiamos el nombre
        DeleteFile(_Name);
        //renombramos la nueva base de datos compactada como se llamaba la base de datos original
        RenameFile(mdbDest, _Name);
        if Verbose then ShowMessage('Hecho, mdb compactada de '+FloatToStr(sizei)+' Kb a '+FloatToStr(sizef)+' Kb');
        PackMdbFile:=True;
      except
        on E:Exception do
        begin
           __Error:=('Excepcion :'+E.Message);
           PackMdbFile:=False;
        end;
      end;
   finally
      JE.FreeOnRelease;
   end;
end;

oorales como hago para que dentro del codigo los : D no se conviertan en :D????


La franja horaria es GMT +2. Ahora son las 14:06:44.

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