Livio Neiva Postado Setembro 14, 2007 Denunciar Share Postado Setembro 14, 2007 linhas de comandos!!!Procedure TFrmMenuPrin.Compactar;Vardao : OLEVariant;BeginPanel1.Visible := True;Dm.Conexao.Connected := False;TryPanel1.Caption := 'Compactando.Tabela';Panel1.Repaint;dao := CreateOleObject('ADO.DBEngine.36');dao.CompactDataBase(ExtractFileDir(Application.ExeName)+'\Banco.mdb',ExtractFileDir(Application.ExeName)+'\Banco2.mdb',",0,"); --------------------> ERROPanel1.Caption:='Apagando Arquivo Temporário';Panel1.Repaint;if FileExists(ExtractFileDir(Application.ExeName)+'\Banco2.mdb')thenDeleteFile(ExtractFileDir (Application.ExeName)+'\Banco.mdb');Panel1.Caption:='Renomeando Arquivo';Panel1.Repaint;if FileExists(ExtractFileDir(Application.ExeName)+'\Banco2.mdb') thenRenameFile(EXtractFileDir(Application.Exename)+'\Banco2.mdb',ExtractFileDir (Application.ExeName)+'\Banco.mdb');Panel1.Caption:='Arquivo Banco.mdb Compactado';Panel1.Repaint;ExceptPanel1.Caption:='Ocorreu um erro durante a Compactação';end;Dm.Conexao.ConnectionString := 'provider=Microsoft.jet.OLEDB.4.0;Data Souser='+ExtractFilePath(Application.ExeName)+'Banco.mdb;Persist Security info=False;';DM.Conexao.Connected := True;Panel1.Visible := False;end;Menssagem de erro;[Error] UMenuPrin.pas(149): Undeclared identifier: '\Banco2.mdb'AGRADEÇO A ATENÇÃO!!! Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Jhonas Postado Setembro 14, 2007 Denunciar Share Postado Setembro 14, 2007 Corrigindo o erro da linha de codigo:dao.CompactDataBase(ExtractFileDir(Application.ExeName)+'\Banco.mdb', ExtractFileDir(Application.ExeName)+'\Banco2.mdb',",0,"); --------------------> ERRO dao.CompactDataBase(ExtractFileDir(Application.ExeName)+'\Banco.mdb', ExtractFileDir(Application.ExeName)+'\Banco2.mdb','',0,'');Voce colocou aspas duplas ao invés de aspas simples (veja a diferença ) Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Livio Neiva Postado Setembro 14, 2007 Autor Denunciar Share Postado Setembro 14, 2007 Corrigindo o erro da linha de codigo:dao.CompactDataBase(ExtractFileDir(Application.ExeName)+'\Banco.mdb', ExtractFileDir(Application.ExeName)+'\Banco2.mdb',",0,"); --------------------> ERRO dao.CompactDataBase(ExtractFileDir(Application.ExeName)+'\Banco.mdb', ExtractFileDir(Application.ExeName)+'\Banco2.mdb','',0,'');Voce colocou aspas duplas ao invés de aspas simples (veja a diferença )ok Jhonas, que vacilo; obrigado pela atençãoproblema resolvido Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Jhonas Postado Setembro 14, 2007 Denunciar Share Postado Setembro 14, 2007 (editado) Apoveitando que voce esta mexendo com compactação do banco access vai ai uma outra dica de uma função que compacta e repara o banco access:Function CompactAndRepair(sOldMDB : String; sNewMDB : String) : Boolean; const sProvider = 'Provider=Microsoft.Jet.OLEDB.4.0;'; var oJetEng : JetEngine; begin sOldMDB := sProvider + 'Data Source=' + sOldMDB; sNewMDB := sProvider + 'Data Source=' + sNewMDB; try oJetEng := CoJetEngine.Create; oJetEng.CompactDatabase(sOldMDB, sNewMDB); oJetEng := Nil; Result := True; except oJetEng := Nil; Result := False; end; end; Exemplo : if CompactAndRepair('e:\Old.mdb', 'e:\New.mdb') then ShowMessage('Successo') else ShowMessage('Erro…');Notas importantes: 1 - inclua na clausula uses JRO_TLB . 2 - Não usar ou abrir o banco de dados durante compactar. 3 - se o compilador lhe dá um erro na unidade de JRO_TLB siga estes passos: a) Usar o Delphi IDE va para Project – Import Type Library. B) Rolar para abaixo até encontrar “Microsoft Jet and Replication Objects 2.1 Library”. c) Clique no botão Install. d) Recompile novamente.. Abdulaziz Jasser Editado Setembro 14, 2007 por Jhonas Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 ClaudioFS Postado Setembro 7, 2009 Denunciar Share Postado Setembro 7, 2009 (editado) Jhonas,Estou com o mesmo problema, preciso compactar o meu banco accessTentei a primeira solução e dá a mensagem : "Cannot start your application. The Workgroup information file is missing or opened exclusively by another user".Sendo que :- Não estava aberto o banco pelo access- o arquivo de workgroup estava no diretorio do mdb.Depois de muitas tentativas e alterações, desisti e fui para a segunda solução que parece mais enxuta. Ao executar o codigo, aparece a mensagem NA funçao oJetEng.compactDatabase :"Coud not find installable ISAM" - Fiz todos os passos para importar e usar a Library- Uso windows vistaPoderia me ajudar ? Editado Setembro 7, 2009 por ClaudioFS Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Jhonas Postado Setembro 7, 2009 Denunciar Share Postado Setembro 7, 2009 Tentei a primeira solução e dá a mensagem : "Cannot start your application. The Workgroup information file is missing or opened exclusively by another user".Mensagem : Não pode iniciar sua aplicação. O arquivo de informação Workgroup está faltando ou abriu exclusivamente para outro usuário ".Coud not find installable ISAMNão encontrou a instalação do ISAMhttp://support.microsoft.com/kb/269490/pthttp://www.alpes-software.com/realisam/http://www.easysoft.com/products/data_acce...bc_isam_driver/Outras fontes de consultahttp://www.ramosdainformatica.com.br/art_r...es01.php?CDA=82http://www.forumweb.com.br/foruns/index.ph...tabelas-access/http://www.activedelphi.com.br/print.php?sid=154http://www.forumweb.com.br/foruns/index.ph...ost&p=54805http://www.ramosdainformatica.com.br/art_r...s01.php?CDA=257abraço Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Aldinei Postado Julho 26, 2017 Denunciar Share Postado Julho 26, 2017 Em 2007-9-14 at 14:05, Jhonas disse: Apoveitando que voce esta mexendo com compactação do banco access vai ai uma outra dica de uma função que compacta e repara o banco access: Function CompactAndRepair(sOldMDB : String; sNewMDB : String) : Boolean; const sProvider = 'Provider=Microsoft.Jet.OLEDB.4.0;'; var oJetEng : JetEngine; begin sOldMDB := sProvider + 'Data Source=' + sOldMDB; sNewMDB := sProvider + 'Data Source=' + sNewMDB; try oJetEng := CoJetEngine.Create; oJetEng.CompactDatabase(sOldMDB, sNewMDB); oJetEng := Nil; Result := True; except oJetEng := Nil; Result := False; end; end; Exemplo : if CompactAndRepair('e:\Old.mdb', 'e:\New.mdb') then ShowMessage('Successo') else ShowMessage('Erro…'); Notas importantes: 1 - inclua na clausula uses JRO_TLB . 2 - Não usar ou abrir o banco de dados durante compactar. 3 - se o compilador lhe dá um erro na unidade de JRO_TLB siga estes passos: a) Usar o Delphi IDE va para Project – Import Type Library. B) Rolar para abaixo até encontrar “Microsoft Jet and Replication Objects 2.1 Library”. c) Clique no botão Install. d) Recompile novamente.. Abdulaziz Jasser Valeu Jhonas Serviu para mim também. Sempre ajudando. Grande abraço. Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
Livio Neiva
linhas de comandos!!!
Procedure TFrmMenuPrin.Compactar;
Var
dao : OLEVariant;
Begin
Panel1.Visible := True;
Dm.Conexao.Connected := False;
Try
Panel1.Caption := 'Compactando.Tabela';
Panel1.Repaint;
dao := CreateOleObject('ADO.DBEngine.36');
dao.CompactDataBase(ExtractFileDir(Application.ExeName)+'\Banco.mdb',
ExtractFileDir(Application.ExeName)+'\Banco2.mdb',",0,"); --------------------> ERRO
Panel1.Caption:='Apagando Arquivo Temporário';
Panel1.Repaint;
if FileExists(ExtractFileDir(Application.ExeName)+'\Banco2.mdb')then
DeleteFile(ExtractFileDir (Application.ExeName)+'\Banco.mdb');
Panel1.Caption:='Renomeando Arquivo';
Panel1.Repaint;
if FileExists(ExtractFileDir(Application.ExeName)+'\Banco2.mdb') then
RenameFile(EXtractFileDir(Application.Exename)+'\Banco2.mdb',
ExtractFileDir (Application.ExeName)+'\Banco.mdb');
Panel1.Caption:='Arquivo Banco.mdb Compactado';
Panel1.Repaint;
Except
Panel1.Caption:='Ocorreu um erro durante a Compactação';
end;
Dm.Conexao.ConnectionString := 'provider=Microsoft.jet.OLEDB.4.0;Data Souser='+
ExtractFilePath(Application.ExeName)+'Banco.mdb;Persist Security info=False;';
DM.Conexao.Connected := True;
Panel1.Visible := False;
end;
Menssagem de erro;
[Error] UMenuPrin.pas(149): Undeclared identifier: '\Banco2.mdb'
AGRADEÇO A ATENÇÃO!!!
Link para o comentário
Compartilhar em outros sites
6 respostass a esta questão
Posts Recomendados
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.