Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

andreferreira

Como compactar Access com ADO

Recommended Posts

Gente preciso da ajuda de todos,fiz um sistema que cria automaticamente um database "Access" cria as tabelas através de Query e preenche os dados no momento da instalação em uma máquina sem MsAccess.Conecto o sistema via ADO sem problemas, porém não vejo a possibilidade de executar a Compactação e a Reindexação do Banco sem o MsAccess.Alguém poderia me ajudar como executar esta tarefa utilizando ADO ou Comandos SQL.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom, so para lembrar caso alguem nao saiba conectar com ADOConnection:Conectando:

procedure TForm1.FormCreate(Sender: TObject); var AppDir: String; begin GetDir(0,AppDir); Adoconnection1.ConnectionString:='Provider=Microsoft.Jet.OLEDB.4.0;Data Source='+AppDir+'\db.mdb;' + 'Persist Security Info=False'; if adoconnection1.ConnectionString <> '' then         begin         AdoTable1.Connection:=Adoconnection1;         Adotable1.Active:=True;         end;         end;

Compactando:

unit Unit1; interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TForm1 = class(TForm) Button1: TButton; procedure Button1Click(Sender: TObject); private { Private declarations } procedure Access_Compact(const aAccess: string); public { Public declarations } end; var Form1: TForm1; implementation uses ComObj; {$R *.DFM} procedure TForm1.Access_Compact(const aAccess: string); const bak_ext = '.$$$'; stAccessDB = 'Provider=Microsoft.Jet.OLEDB.4.0;' + 'Data Source=%s'; var JetEngine: Variant; TempName: string; begin TempName := ChangeFileExt(aAccess, bak_ext); DeleteFile(TempName); JetEngine := CreateOleObject('JRO.JetEngine'); try JetEngine.CompactDatabase(Format(stAccessDB,[aAccess]),Format(stAccessDB,[TempName])); DeleteFile(aAccess); RenameFile(TempName, aAccess); finally JetEngine := Unassigned; end; end; procedure TForm1.Button1Click(Sender: TObject); begin Screen.Cursor := crHourglass; try Access_Compact('C:\Meus documentos\db1.mdb'); finally Screen.Cursor := crDefault; end; ShowMessage('Compactação completa.'); end; end.

OBS.: Para compactar a DB Access é preciso estar desconectado do mesmo pois ele gera um erro pois o mesmo esta sendo usado pela aplicação!!!Ahh... isso eh DELPHI!!!Falows, posta ai se funcionou!!! :(

Compartilhar este post


Link para o post
Compartilhar em outros sites

kkkkk ;;; depois de anos vim aqui buscar meu próprio source ...kkk tinha esquecido e incrivel que pareça... perdi todos meus exemplos e projetos do HD.... kkkk


Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.