Ir para conteúdo
Fórum Script Brasil
  • 0

componente TBackup


flavioavilela

Pergunta

alguém que já usou esse componente pode me dar uma luz???

seguinte, eu configuro ele beleza, criei a telinha pra usar, pra escolher onde salvar e tudo mais... quando eu mando ele salvar algum arquivo ou outro banco de dados que não seja o que está sendo usado no momento, ele salva perfeito, mas se eu mando salvar o banco de dados daquele momento ele não salva, da erro... eu imagino que seje porque o banco está aberto né, mas, se eu quiser fazer o backup, obvio que é desse banco q está aberto... então, como faço para realizar esse backup? alguém pode dar uma luz ai???

Editado por flavioavilela
Link para o comentário
Compartilhar em outros sites

23 respostass a esta questão

Posts Recomendados

  • 0
se eu mando salvar o banco de dados daquele momento ele não salva, da erro... eu imagino que seje porque o banco está aberto né, mas, se eu quiser fazer o backup, obvio que é desse banco q está aberto... então, como faço para realizar esse backup?

Como o colega Alberto Mota já explicou, todas as tabelas devem ser fechadas

Se estiver usando o interbase ficaria assim:

FMenu.IBDatabase1.ForceClose;
     FMenu.IBDatabase1.CloseDataSets;
     FMenu.IBDatabase1.Close;
     FMenu.IBTransaction1.Active := false;

abraço

Link para o comentário
Compartilhar em outros sites

  • 0
certo, se pelo que entendi, todas as tabelas (querys) deverão estar fechadas, no meu caso eu utilizo sql server, como ficaria?

Fechando somente a conexão já é suficiente, mas se quiser pode fechar as tabelas e as queries antes.

ADOConnection1.Connected := false;

ADOTable1.Active := false;
ADOTable1.TableDirect := false;

ADOQuery1.Active := false;

abraço

Link para o comentário
Compartilhar em outros sites

  • 0
fechei somente a conexão... não deu certo e qualquer outro arquivo faz o backup numa boa... que zica é essa eim rsrs???

se eu mando salvar o banco de dados daquele momento ele não salva, da erro..

Se voce colocasse o erro que aparece no começo, quem sabe já teria uma solução para o problema

abraço

Link para o comentário
Compartilhar em outros sites

  • 0
aparece a menagem de erro: esse arquivo está sendo usado por outro processo...

Esse erro ocorre quando em alguma outra parte do seu programa a conexão estiver sendo exigida por alguma tabela aberta

Tente usar esta procedure, antes de efetuar o backup

procedure TForm1.desconectar;
var
    i: shortInt;
begin
    for i := 0 to componentCount - 1 do begin
        if ( components[i] is TCustomConnection ) then
           ( components[i] as TCustomConnection ).Close;
    end;
end;

abraço

Link para o comentário
Compartilhar em outros sites

  • 0
erro: Cannot open file "arquivo desejado"
Acho que voce deve fazer uma varredura em todo o seu projeto ... esse erro é: Não pode abrir arquivo

significa que existe claramente uma tentativa de abrir alguma tabela depois que ela foi fechada.

Como eu disse, faço backup em meus sistemas, mas utilizo o interbase e este comando funciona perfeitamente

FMenu.IBDatabase1.ForceClose;

FMenu.IBDatabase1.CloseDataSets;

FMenu.IBDatabase1.Close;

FMenu.IBTransaction1.Active := false;

Veja que estes comandos estão forçando o fechamento de todas as tabelas do banco de dados

A ideia é a mesma para o ADO

abraço

Link para o comentário
Compartilhar em outros sites

  • 0

fiz o teste... fechei todas as tabelas com o seguinte código

var cont: integer;
begin
  for Cont := 0 to dm.ComponentCount - 1 do
    begin
      if Components[Cont] is TADOQuery then
        TADOQuery(Components[Cont]).close;
    end;

e fechei também o adoconnection e deu a mensagem de erro: List index out of bounds (22)....

Link para o comentário
Compartilhar em outros sites

  • 0
e fechei também o adoconnection e deu a mensagem de erro: List index out of bounds (22)....

Lista de indice fora do escopo

Se o erro foi nesta linha , use o debuge o delphi para saber qual o valor de dm.ComponentCount

for Cont := 0 to dm.ComponentCount - 1 do

depois tente assim, e veja qual o valor de ComponentCount

for Cont := 0 to ComponentCount - 1 do

abraço

Link para o comentário
Compartilhar em outros sites

  • 0

bom, a mensagem do list index parou, eu coloquei assim:

var cont: integer;
begin
  for Cont := 0 to dm.ComponentCount - 1 do
    begin
      if dm.Components[Cont] is TADOQuery then
        TADOQuery(dm.Components[Cont]).Active:= false;
    end;

mas, mesmo assim, continua dando o erro falando que o arquivo do bd está sendo utilizado por outro processo...

Link para o comentário
Compartilhar em outros sites

  • 0
mas, mesmo assim, continua dando o erro falando que o arquivo do bd está sendo utilizado por outro processo...

Só daria esse erro , se o seu aplicativo estivesse aberto 2 vezes

Veja neste link ...

Componente compatível com Delphi 3, 4 e 5, adiciona facilmente capacidades de backup e restauração para sua aplicação, com os seguintes recursos: compressão de dados, backup e restauração completos ou incrementais, Delphi nativo: nenhuma DLL é necessária, e outros. Executável e código fonte inclusos

http://www.ec-software.com/delphi/backfile.zip

abraço

Link para o comentário
Compartilhar em outros sites

  • 0

só uma questão... tipo, eu quero continuar usando esse mesmo componente, pois já criei o layout da janela e pra outros backups está perfeito... só queria uma luz... tipo, o que mais pode acontecer para que o bd possa estar aberto no momento do backup, sendo que eu estou fechando todas as tabelas e até o adoconnection???

Link para o comentário
Compartilhar em outros sites

  • 0
só uma questão... tipo, eu quero continuar usando esse mesmo componente, pois já criei o layout da janela e pra outros backups está perfeito... só queria uma luz... tipo, o que mais pode acontecer para que o bd possa estar aberto no momento do backup, sendo que eu estou fechando todas as tabelas e até o adoconnection???

Não sei como está o seu projeto, mas tambem utilizo esse componente e funciona perfeitamente quando fecho a conexão com o banco de dados para fazer o backup.

OBS: Me lembrei de uma coisa ... na rotina ( código ) que realiza o backup, coloque os comandos para fechar a conexão com o banco dentro dele, antes da rotina de inicializar o backup ... precisei fazer essa mudança no código para não ficar dando erro.

abraço

Link para o comentário
Compartilhar em outros sites

  • 0
cara, fui lá no código do componente, coloquei o comando pra fechar as conexoes e tal, não funcionou... to fudido... vou ter que desenterra uma cabeça de paca que ta enterrada aqui viu rsrsrs...

Use o debuge do delphi para tentar achar onde está o problema, ou procure por todas as conexões em seu projeto, voce deve ter deixado alguma ativada em tempo de design

abraço

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,4k
×
×
  • Criar Novo...