Fórum Erro ao compactar com winzip.. #295656

15/09/2005

0

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

Responder

Posts

15/09/2005

Eric.miranda

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:


Responder

Gostei + 0

15/09/2005

Mahdak

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.




Responder

Gostei + 0

15/09/2005

Mahdak

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!


Responder

Gostei + 0

16/09/2005

Eric.miranda

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


Responder

Gostei + 0

16/09/2005

Mahdak

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;


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar