backup

Delphi

23/05/2003

Peguei um componente de Backup e ele funciona bem, se estiver rodando fora do sistema, mas gostaria de coloca-lo dentro do meu sistema, para permitir o usuário fazer o backup sem ter que abrir outro programa para isso.
O problema é que quando vou fazer a restauração dá problema no pdoxusers.net, sei que é porque o arquivo está sendo usado, mas tem como fazer a restauração sem dar problema com isso.

utilizo o delphi 5 com paradox em rede


Salupe

Salupe

Curtidas 0

Respostas

Marcelo.c

Marcelo.c

23/05/2003

Quanto ao componente externo não sei, mas você pode tentar o código abaixo (retirado do DTDelphi) para fazer o backup dentro do sistema:

075 - Backup & Restauração
Para efetuar a cópia:

procedure TFormCopia.BitBtn1Click(Sender: TObject);
var
I: Integer;
begin
Database1.Connected:=True; // Database para controle
Table2.DatabaseName:=DirectoryListBox1.Directory; // Seleciona local de destino da cópia
with Session1 do
begin
Active:=True;
GetTableNames(´AliasName´,´*.*´,True,True,Memo1.Lines); // Retorna o nome das tabelas
end;
for I:= 0 to Memo1.Lines.Count - 1 do
begin
Table1.TableName:=Memo1.Lines[I]; // Tabela origem
Table2.TableName:=Memo1.Lines[I]; // Tabela destino
BatchMove1.Execute;
end;
end;
Para efetuar a restauração:

procedure TFormRestaura.BitBtn1Click(Sender: TObject);
var
I: Integer;
begin
Database1.Connected:=True;
Table2.DatabaseName:=DirectoryListBox1.Directory; // Origem da restauração
with Session1 do
begin
Active:=True;
GetTableNames(Table2.DatabaseName,´*.*´,True,True,Memo1.Lines); // Retorna nomes das tabelas
end;
for I:= 0 to Memo1.Lines.Count - 1 do
begin
Table1.TableName:=Memo1.Lines[I]; // Tabela origem

Table2.TableName:=Memo1.Lines[I]; // Tabela destino BatchMove1.Execute;
end;
end;

Após restaurar por este método, você deve recriar os índices.


GOSTEI 0
Marconi

Marconi

23/05/2003

Isto ocorre quando existe um usuário tentando utilizar o mesmo banco de dados atraves de dois softwares diferentes, ou ainda quando um usuário tenta utilizar um banco de dados com um controle de rede, mas que está sendo utilizado por outro usuario em outro controle de rede.


Para evitar este tipo de erro no BDE tenha em todos os seus sistemas de rede a definição de onde vai ser o controle de rede e onde serão criados os arquivos temporários.

Coloque estas linhas no FormCreate do form principal

Session.PrivateDir :=´c:\windows\temp´;
Session.NetFileDir:=´s:\rede´; // este é o meu diretório de rede.

Desta maneira voce poderá acessar qualquer tabelas em bancos de dados diferentes ao mesmo tempo.

O BDE não permite dois softwares diferentes ou não, com o mesmo usuário. Tente rodar o mesmo programa duas vezes e vai ver este erro.

Marconi


GOSTEI 0
Marconi

Marconi

23/05/2003

Obs: Não esqueça de apagar os arquivos ´pdoxusers.net´ que já foram gerados e ainda não foram apagados.

Um outro erro acontece quando o último usuário está se desconectando do banco de dados e o sistema está apagando o arquivo mencionado. Se neste momento, um usuário tentar se conectar vai dar erro pois o sistema tentará criar este arquivo que esta sendo apagado.

Marconi


GOSTEI 0
POSTAR