WideString WSCurrConn, WSTempDB;
WSCurrConn=ADOC->ConnectionString;
WSTempDB="New.mdb";
Variant JE = Variant::CreateObject("JRO.JetEngine");
try
{HRESULT hResult = JE.OleFunction ("CompactDatabase", WSCurrConn,
"Provider=Microsoft.Jet.OLEDB.4.0;
Data Source="+WSTempDB+";
Persist Security Info=False;
Jet OLEDB:Database Password=pass");
ShowMessage("");}
__finally
{JE = Unassigned;}
Помогите с ошибкой.
Вот нашел способ сжатия БД Access
хотя кому как удобно
Variant V;
V = CreateOleObject("Access.Application");
V.Exec(Procedure("Open") << "Normal");
Цитата:
Originally posted by Sirec
вообще-то лучше делать так
хотя кому как удобно
Variant V;
V = CreateOleObject("Access.Application");
V.Exec(Procedure("Open") << "Normal");
вообще-то лучше делать так
хотя кому как удобно
Variant V;
V = CreateOleObject("Access.Application");
V.Exec(Procedure("Open") << "Normal");
Мне вообще нужно сжать БД! А ты о чем подумал?
Variant V = CreateOleObject ( "Access.Application" );
//V.Exec ( PropertySet( "Visible" ) << "True" );
//V.Exec ( Procedure( "OpenCurrentDatabase" ) << "d:\\db2.mdb" << "True" );
Variant je = V.CreateObject ( "JRO.JetEngine" );
je.Exec ( Function( "CompactDatabase" ) << "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\\db1.mdb" << "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\\db1-compress.mdb;Jet OLEDB:Encrypt Database=True" );
//Jet OLEDB:Encrypt Database=True
//Jet OLEDB:Don't Copy Locale on Compact=True
//Jet OLEDB:Compact Without Relationships=True
//Jet OLEDB:Compact Without Replica Repair=True
//Jet OLEDB:Engine Type=1...5
есть способ через DBEngine.CompactDatabase
//DBEngine.CompactDatabase olddb, newdb, locale, options, password
но он не работает
выдаёт, что библиотека не загружена
Variant V = CreateOleObject ( "Access.Application" );
V.Exec ( PropertySet( "Visible" ) << "True" );
V.Exec ( Procedure( "OpenCurrentDatabase" ) << "d:\\db2.mdb" << "True" );
// здесь выдаёт, что библиотека не загружена
Variant E = V.Exec ( PropertyGet( "DBEngine" ) );
E.Exec ( Procedure( "CompactDatabase" ) << "d:\\db1.mdb" << "d:\\db1-compress.mdb" );
если так делать, то ваще не сжимает, а просто создаёт базу db1-compress.mdb
Variant je;
je = CreateOleObject ( "JRO.JetEngine" );
je.Exec ( Function( "CompactDatabase" ) << "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\\db1.mdb" << "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\\db1-compress.mdb;Jet OLEDB:Encrypt Database=True" );