Erro ao compactar com winzip..

Delphi

15/09/2005

Bom dia pessoal.. estou tentando compactar meu banco de dados com winzip, mas com a rotina que estou usando ele está me dizendo que está dando erros no winzip.. dizendo que o bd está aberto.. e grava corrompido ..

esse é o meu codigo..

18: BEGIN
If savedialog.Execute then
Begin
[b:7adfe34628]Fecha;[/b:7adfe34628]
Origem := ´C:\Balanca\Veiculos.mdb´;
If FileExists(Trim(Origem)) then
Begin
Try
SHELLEXECUTE(0,NIL,´WINZIP32.EXE´,PChar(´-min -a -ex ´´ + Savedialog.Filename + ´´ ´ + ´´´ + Origem + ´´´),NIL,SW_SHOW);
except
begin
Application.Messagebox(´Ocorreram erros.´,´Backup´,mb_iconinformation+mb_Ok);
exit;
end;
end;
end
else
MessageDlg(´Não foi encontrado o arquivo,´+#13+´C:\Balança\Veiculos.mdb´,mtInformation,[mbOK],0);
end;

a procedure Fecha descrito acima.. eu fecho todas as tabelas.

procedure TFRMMENU.Fecha;
begin
DTDB.LOGIN.Connected := false;
// Desabilita as tabelas
DTDB.VEI.Active := false;
DTDB.COF.Active :=false;
DTDB.LEI.Active :=false;
DTDB.MED.Active :=false;
DTDB.MUN.Active :=false;
DTDB.REP.Active :=false;
DTDB.EXC.Active :=false;
DTDB.OPE.Active :=false;
DTDB.ESP.Active :=false;
DTDB.CAT.Active :=false;
DTDB.COR.Active :=false;
DTDB.MUL.Active :=false;
DTDB.MAR.Active :=false;
DTDB.MDENATRAN.Active :=false;
DTDB.MULR.Active :=false;
DTDB.LEG.Active :=false;
DTDB.TIP.Active :=false;
//Desabilitando as consultas
DTDB.REPESAGEM.Active :=false;
DTDB.INFRACOES.Active :=false;
DTDB.AGRUPADO.Active :=false;
DTDB.FLUXO.Active :=false;
DTDB.RELACAO.Active :=false;
DTDB.Eixo.Active :=false;
DTDB.ExcessoEixo.Active :=false;
DTDB.EXCESSO.Active :=false;
DTDB.Incrementa.Active :=false;
end;

alguém pode me ajudar nessa.. tenho que entregar isso hj!!!


valeu mesmo
Eric


Eric.miranda

Eric.miranda

Curtidas 0

Respostas

Eric.miranda

Eric.miranda

15/09/2005

Pessoal alguém tem alguma sugestão pra mim fazer esse backup.. nem que seja pra mim mudar a forma...
tenho que entregar esse projeto agora mesmo!!!
fiz vários testes aqui.. e parece que a conexão odbc dele trava..

pq fechei todas as tabelas e os databases e continua dando erro..

conto com a ajuda de vcs!! :roll: :roll: :roll:


GOSTEI 0
Mahdak

Mahdak

15/09/2005

tente isso:


unit Backup_Form;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  StdCtrls, Buttons, FileCtrl;

type
  TForm1 = class(TForm)
    OpenDialog: TOpenDialog;
    SaveDialog: TSaveDialog;
    btnBackup: TBitBtn;
    btnRestore: TBitBtn;
    GroupBox1: TGroupBox;
    DirectoryListBox1: TDirectoryListBox;
    DriveComboBox1: TDriveComboBox;
    Label1: TLabel;
    FileListBox1: TFileListBox;
    procedure btnBackupClick(Sender: TObject);
    procedure btnRestoreClick(Sender: TObject);
    procedure FormCreate(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.DFM}

procedure TForm1.btnBackupClick(Sender: TObject);
begin
If not SaveDialog.Execute Then Exit;
   WinExec(PChar(´C:\Arquivos de Programas\WinZip\WinZip32 -min -a -r "´+SaveDialog.FileName+´" ´
                 +´"´+Label1.Caption+´"´),1);
end;

procedure TForm1.btnRestoreClick(Sender: TObject);
begin
If not OpenDialog.Execute Then Exit;
   WinExec(PChar(´C:\Arquivos de Programas\WinZip\WinZip32 -min -e "´+OpenDialog.FileName+´" ´
                 +´"´+Label1.Caption+´"´),1);
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
DirectoryListBox1.Directory:=´C:\´;
end;

end.




GOSTEI 0
Mahdak

Mahdak

15/09/2005

detalhe que esqueci de dizer....

feche o seu aplicativo quando for realizar o backup, para que a sua tabela nao esteja aberta... ;) dae o problema ja eras....
Abraços!


GOSTEI 0
Eric.miranda

Eric.miranda

15/09/2005

obrigado mahdak pela ajuda,
só mais uma dúvida..
para mim fechar minha aplicação esse backup teria então que ser um módulo fora desse meu sistema??


valeu
Eric


GOSTEI 0
Mahdak

Mahdak

15/09/2005

obrigado mahdak pela ajuda, só mais uma dúvida.. para mim fechar minha aplicação esse backup teria então que ser um módulo fora desse meu sistema?? valeu Eric


isso...
para chama-lo e fechar o seu sistema voce teria que primeiro chamar o bacckup e depois dar um close no sistema, do tipo:

procedure botaobackup;
begin
backup.show;
sistema.close;
end;


GOSTEI 0
POSTAR