GARANTIR DESCONTO

Fórum Compactar e Corrigir - BD Access #266052

19/01/2005

0

Olá pessoal!

Preciso de algo que execute uma função do BD Access. Abrindo o Access a função que preciso está em: ´Ferramentas -> Utilitários de banco de dados -> Compactar e corrigir banco de dados...´

Segundo o que pesquisei aqui mesmo no forum, existe uma bilbioteca chamada [b:74efa7059b]kaAdo[/b:74efa7059b] que, entre seus recursos, tem a capacidade de executar esta função que citei acima, no BD Access. Porém, fui tentar instalar e dá erro na diretiva ´{$ALIGN 8}´ do pacote. Além disso, na cláusula [b:74efa7059b]requires[/b:74efa7059b], acusa a falta de ´vcl´. Tá meio esquisito....

Alguém sabe como conseguir executar no Delphi esta função do Access que estou precisando?

E/OU

Alguém sabe como corrigir o problema da instalação desta biblioteca?

Valeu
wbb


Wbb

Wbb

Responder

Posts

19/01/2005

Massuda

Alguém sabe como corrigir o problema da instalação desta biblioteca?

Algumas dicas básicas para instalar o pacote:[list:ae4e05ce1b][*:ae4e05ce1b]Você baixou a versão mais recente do KAAdo do [url=http://kadao.dir.bg/]site ´oficial´[/url] (http://kadao.dir.bg/)?[*:ae4e05ce1b]Quando descompactar, preserve a estrutura de diretórios/pastas contida no arquivo .ZIP (depende do seu zipador/deszipador)[*:ae4e05ce1b]Na hora de instalar, você deve abrir o arquivo KAAdo.dpk existente no subdiretório correspondente a sua versão de Delphi (exemplo: se você está usando o Delphi5, use o subdiretório D5).[/list:u:ae4e05ce1b]


Responder

Gostei + 0

19/01/2005

Wbb

Então tá esquisito mesmo... vou tentar refazer o processo todo.

Tem também algumas funções aqui mesmo no forum, pesquisando pela palavra ´corrigir´, que indicam como fazer a compactação via código. Porém, usando Access 2000 com instalado Jet4 não estão funcionando estas funções.

wbb


Responder

Gostei + 0

21/01/2005

Wbb

Agora funcionou a instalação. Mas o processo de compactação do BD ainda não consegui não...

Se alguém tiver alguma dica ou exemplo eu agradeço.

wbb


Responder

Gostei + 0

21/01/2005

Aroldo Zanela

Colega,

Encontrei esta dica do Brian Bushay (TeamB)

> Anyone knows how to call the Compact Database function in Delphi 5.0 in >order to compact database for Microsoft Access. Any help is appreciate.


[quote:34f5eab9a5=´Brian Bushay (TeamB)´]You need to import the JRO type library to use the following code

Here´s a procedure that works for me. You have to import the JRO type
library to compact an Access database.[/quote:34f5eab9a5]

procedure TMainForm.CompactDataBaseMenuClick(Sender: TObject);
var JROJetEngine: TJROJetEngine;
    strTempDBPath,
    strSource,
    strDest,
    strJetVersion: string;
    iLength: integer;
begin
  if strGlobalAccessVersion = ´2000´ then
    strJetVersion := ´5´ { Access 2000}
  else if strGlobalAccessVersion = ´97´ then
    strJetVersion := ´4´; {Jet 3.x, Access 97}
  strTempDBPath := ExtractFilePath(strGlobalDBPath) + ´TEMP.MDB´;
  strSource := ´Data Source=´ + strGlobalDBPath + ´;Jet OLEDB:Engine Type=´
+ strJetVersion;
  strDest := ´Data Source=´ + strTempDBPath + ´;Jet OLEDB:Engine Type=´ +
strJetVersion;
  try
    try
      Screen.Cursor := crHourGlass;
      if not dbModule.CloseAll then
        begin
          MessageDlg(´Error closing some datasets, unable to compact´,
mtError, [mbOk], 0);
          exit;
        end
      else
        dbModule.ADOConnection1.Close;
      Application.ProcessMessages;
      JROJetEngine := TJROJetEngine.Create(Application);
      JROJetEngine.CompactDatabase(strSource, strDest);
      SysUtils.DeleteFile(strGlobalDBPath);
      RenameFile(strTempDBPath, strGlobalDBPath);
      MessageDlg(´The database has been packed´, mtInformation, [mbOk], 0);
    except
      on E: Exception do
        MessageDlg(´Error packing database: ´ + E.Message, mtError, [mbOk],
0);
    end;
  finally
    JROJetEngine.Free;
    dbModule.ADOConnection1.Open;
    Screen.Cursor := crDefault;
  end;
end;



Responder

Gostei + 0

21/01/2005

Wbb

Valeu Aroldo!
Eu praticamente acabei de conseguir terminar a parte do meu programa que faz essa compactação que eu precisava. Tirei a solução pesquisando aqui no forum mesmo. Fiz algumas modificações, mas a coisa é a mesma.

Obrigado pela ajuda.
wbb

Segue abaixo a solução que utilizei:

[i:927f7e1969]Este programa tem como objetivo fazer com que um arquivo de banco de dados do Access seja compactado via código Delphi, tal como acontece se formos ao menu ´Ferramentas - Utilitários de banco de dados - Compactar e corrigir banco de dados´ do próprio Access.

Vá em Projet / Import Type Library e escolha a opção Microsoft Jet and Replication Objects 2.6 Library... Clique no botão Install. Será aberta uma janela de diálogo pedindo para indicar o arquivo DPK para onde será apontado os novos componentes desta biblioteca. Este DPK se encontra
normalmente em ´C:\Arquivos de programas\Borland\Delphi5\lib´. Aponte e pressione OK para instalar esta biblioteca de componentes Activex. Na paleta Activex aparecerão 2 novos componentes.

Abra um novo projeto e insira um componente ADOConnection, um JetEngine e um botão. Em seguida cole o código abaixo:[/i:927f7e1969]

procedure TForm1.Button1Click(Sender: TObject);
var BD_Old, BD_New: WideString;
    Path_Nome_BD_Old: WideString;
    Path_Nome_BD_New: WideString;
begin

Path_Nome_BD_Old := ´C:\Temp\BDAccess.mdb´;
Path_Nome_BD_New := ´C:\Temp\BDAccess_XXX.mdb´;

BD_Old := ´Provider=Microsoft.Jet.OLEDB.4.0;´ +
          ´Data Source=´ +
           Path_Nome_BD_Old;

BD_New := ´Provider=Microsoft.Jet.OLEDB.4.0;´ +
          ´Data Source=´ +
           Path_Nome_BD_New;


ADOConnection1.Connected := False;
JetEngine1.CompactDatabase(BD_Old, BD_New);
DeleteFile(Path_Nome_BD_Old);
RenameFile(Path_Nome_BD_New, Path_Nome_BD_Old);
ADOConnection1.Connected := True;
end;



Responder

Gostei + 0

28/01/2005

Pistesil

Oi a todos
Teria como usar uma progressbar para indicar esse processo?
Desde ja agradeço.


Responder

Gostei + 0

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

Aceitar