Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Conexión con bases de datos (https://www.clubdelphi.com/foros/forumdisplay.php?f=2)
-   -   Mantenimiento a Access (https://www.clubdelphi.com/foros/showthread.php?t=67994)

Jucho69 18-05-2010 17:34:41

Mantenimiento a Access
 
Hola

A veces he tenido problemas con las bases de dato Access que se corrompen de vez en cuando, entonces tomé prestado un codigo de ustedes e hice está pequena aplicación que me resolvió el problema totalmente, espero que le sirva a alguien.

Saludos ;)

delphi.com.ar 18-05-2010 17:43:13

Si ibas a compartir algo de código, te cuento que te lo has olvidado!.

Saludos!

Jucho69 18-05-2010 18:09:11

Hola

Es que estaba tratando de subir un adjunto con todo en .zip pero exede la cuota, a ver de esta forma:

file:///C:/Documents%20and%20Setting...nimientoBD.exe

Aqui está el código.

Un Form, un Opendialog, tres Botones(yo usé Xbutton) y dos Edit
Código Delphi [-]
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, comobj, ExtCtrls, Mask, DBCtrls, dxCore, dxButton,
  jpeg;

type
  TForm1 = class(TForm)
    Bevel53: TBevel;
    Image9: TImage;
    Bevel62: TBevel;
    Bevel65: TBevel;
    Bevel64: TBevel;
    Bevel67: TBevel;
    Bevel68: TBevel;
    Bevel66: TBevel;
    Label1: TLabel;
    dxButton11: TdxButton;
    dxButton14: TdxButton;
    dxButton1: TdxButton;
    Bevel63: TBevel;
    Bevel59: TBevel;
    Edit1: TEdit;
    OpenDialog1: TOpenDialog;
    Bevel1: TBevel;
    Edit2: TEdit;
    Label2: TLabel;
    Bevel35: TBevel;
    procedure dxButton1Click(Sender: TObject);
    procedure dxButton14Click(Sender: TObject);
    procedure dxButton11Click(Sender: TObject);
    procedure OpenDialog1CanClose(Sender: TObject; var CanClose: Boolean);
    procedure FormCreate(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation


{$R *.dfm}

procedure TForm1.dxButton1Click(Sender: TObject);
var DBEngine : OLEVariant;
    BaseDeDatos, Contra:string;
Begin
 BaseDeDatos:=Edit1.Text;
 Contra:=Edit2.Text;
  try
    DeleteFile(BaseDeDatos + '2');
    DbEngine := CreateOleObject('Dao.DbEngine.35');
    DbEngine.CompactDataBase(BaseDeDatos, BaseDeDatos + '2', NULL, 0, ';pwd='+Contra);
    DeleteFile(BaseDeDatos);
    RenameFile(BaseDeDatos + '2', BaseDeDatos);
  except
    try
      DeleteFile(BaseDeDatos + '2');
      DbEngine := CreateOleObject('Dao.DbEngine.36');
      DbEngine.CompactDataBase(BaseDeDatos, BaseDeDatos + '2', NULL, 0, ';pwd='+Contra);
      DeleteFile(BaseDeDatos);
      RenameFile(BaseDeDatos + '2', BaseDeDatos);
    except
      try
        DeleteFile(BaseDeDatos + '2');
        DbEngine := CreateOleObject('Dao.DbEngine.120');
        DbEngine.CompactDataBase(BaseDeDatos, BaseDeDatos + '2', NULL, 0, ';pwd='+Contra);
        DeleteFile(BaseDeDatos);
        RenameFile(BaseDeDatos + '2', BaseDeDatos);
      finally
     end;
    end
   end;
  dxButton1.Enabled:=false;
 end;
procedure TForm1.dxButton14Click(Sender: TObject);
 begin
  Form1.Close;
 end;
procedure TForm1.dxButton11Click(Sender: TObject);
 begin
  OpenDialog1.Execute;
 end;
procedure TForm1.OpenDialog1CanClose(Sender: TObject; var CanClose: Boolean);
 begin
  Edit1.Text:=(OpenDialog1.FileName);
  dxButton1.Enabled:=true;
 end;
procedure TForm1.FormCreate(Sender: TObject);
 var hMenuHandle : HMENU;  Sem:THandle;
   begin
    hMenuHandle := GetSystemMenu(Form1.Handle, FALSE);
    if (hMenuHandle <> 0) then
    DeleteMenu(hMenuHandle, SC_CLOSE, MF_BYCOMMAND);
   Sem := CreateSemaphore(nil,0,1,'MantenimientoBD.exe');
   if ((Sem <> 0) and (GetLastError = ERROR_ALREADY_EXISTS)) then
    begin
     CloseHandle( Sem );
     ShowMessage('Este programa ya se está ejecutando...');
     Halt;
    end;
  end;
end.

Neftali [Germán.Estévez] 18-05-2010 18:17:04

Lo más sencillo en estos casos es que lo subas a un servidor público tipo Megaupload o rapidshare y luego coloques aquí el link. Incluso puedes usar el FTP del club.

Jucho69 18-05-2010 19:13:56

Hola Neftali

Sí, esmás facil, lo puse en

http://rapidshare.com/files/38882940...ntoBD.zip.html

Saludos

Neftali [Germán.Estévez] 19-05-2010 10:38:22

Hola.
Te lo he subido al FTP en la sección Delphi y he eliminado un par de copias que habías subido a otros directorios.

Gracias por compartir el código.

Jucho69 19-05-2010 14:10:37

Hola amigo

Ahh sí, hice varios intentos, y pensé que no habia dado resultado, hasta borré un compactado sobre mi foto para hacer espacio,
buena novatada jejeje.

Saludos

marcoszorrilla 19-05-2010 15:01:48

En cualquier caso gracias por compartir tu código.

Un Saludo.

Jucho69 20-05-2010 18:30:24

Es de ustedes, gracias a tí por ordenar el reguero de código.

Saldos

Caral 20-05-2010 18:43:04

Hola
Pregunto:
Para que el programa haga la copia de la BD (que es lo que me parece que hace) esta tiene que estar cerrada, osea, que nadie la este usando?.
Saludos

Jucho69 20-05-2010 20:09:27

Hola Caral

Sí, no puede estar en uso, yo lo corro por la tarde al salir del trabajo, pude ver que no hace copias, pero como tu utilizas Access desde hace tiempo a lo mejor tienes alguna buena solución para eso.

Saludos

Caral 20-05-2010 20:17:30

Hola
Yo uso un programa que se llama BackUp Maquine, esta hecho en delphi.
Lo que yo hago es que cada 2 horas avisa si se quiere hacer un backUp si es asi hace una copia o varias sin necesidad de cerrar la BD.
Si lo quieres me dices y lo pongo aqui.
saludos

Jucho69 20-05-2010 20:52:03

Ahh que bién, te lo agradezco, veré como lo adapto.

Saludos

Caral 20-05-2010 21:16:57

Hola
Aqui esta, es facil de configurar.
Saludos

Neftali [Germán.Estévez] 21-05-2010 12:11:27

¿Se puede subir al FTP Carlos? ;)

Jucho69 21-05-2010 16:49:24

Caral, esta bién el programa, facil de usar y hoy a ver si lo reviso mejor, lo que yo hice es más bién para repararlas.

Saludos

Caral 21-05-2010 19:42:03

Hola
Cita:

Empezado por Neftali (Mensaje 364884)
¿Se puede subir al FTP Carlos? ;)

Pues me imagino que si, el programa no es mio, lo baje hace tiempo de algun lado pero es codigo libre.
No creo que se tenga ningun problema, si gustas lo subes.
Saludos

Neftali [Germán.Estévez] 22-05-2010 11:43:38

Cita:

Empezado por Caral (Mensaje 364948)
Pues me imagino que si, el programa no es mio, lo baje hace tiempo de algun lado pero es codigo libre.
No creo que se tenga ningun problema, si gustas lo subes.
Saludos

OK.
Pensé que lo habías hecho tú, de ahí la pregunta... ;)


La franja horaria es GMT +2. Ahora son las 03:56:46.

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