Форум: "Базы";
Текущий архив: 2002.04.04;
Скачать: [xml.tar.bz2];
ВнизЗдравствуйте, уважаемые коллеги! Найти похожие ветки
← →
Valentin2 (2002-03-11 11:16) [0]Кто-нибудь создавал программно базу данных MS Access?
Пробовал с помощью функции SQLConfigDataSource, но по-моему это не то, да и библиотеки соответствующей у меня не оказалось...
И ещё вопрос: каким образом, опять же программно сжать базу MS Access?
Благодарен заранее за любое внимание к моей проблеме.
← →
sniknik (2002-03-11 11:23) [1]через ADOX
if not FileExists(sBase) then begin
AdoEngine:= CreateOleObject("ADOX.Catalog");
AdoEngine.Create("Provider=Microsoft.Jet.OLEDB.4.0;Data Source="+
sBase+";Jet OLEDB:Engine Type=5;");
AdoEngine.ActiveConnection.Close;
AdoEngine:= Null;
end;
через DAO
procedure CreateMSAccessDB(filename : String);
var
DBEngine, Workspace: Variant;
const
{Important to use the following constant as is}
dbLangGeneral = ";LANGID=0x0409;CP=1252;COUNTRY=0";
dbVersion30 = 32;
begin
DBEngine := CreateOleObject("DAO.DBEngine");
{DBEngine := CreateOleObject("DAO.DBEngine.35"); For DAO 3.5}
Workspace := DBEngine.Workspaces[0];
try
Workspace.CreateDatabase(filename, dbLangGeneral, dbVersion30);
except
on EOleException do ShowMessage("Database already exists");
end;
end;
а вот с паковкой туго вроде она сама разбырается что и как ей паковать и других не допускает к этому делу.
← →
Valentin2 (2002-03-11 11:41) [2]sniknik! Большое Вам спасибо!!! базу удалось создать с первой попытки.
Но вот с паковкой всё-таки проблема остаётся, и её всё-таки можно сжимать программно, ведь ODBC это делает именно так, но как?..
← →
sniknik (2002-03-11 11:58) [3]Найдеш как зашли на мыло, чтоб не пропустить. Мне не удалось.
← →
Valentin2 (2002-03-11 12:06) [4]Хорошо...
← →
Valentin2 (2002-03-11 12:21) [5]У меня в папке "C:\Program Files\Common Files\SYSTEM\ADO" есть Help Ado210.chm, и в нём есть пример функции CompactDatabase на Visual Basic-е, но я в нём пока не разобрался. Может, ты попробуешь?
← →
Valentin2 (2002-03-11 12:43) [6]У меня заработало, но я программирую на Bilder-е, и как это будет на Delphi, не знаю, но думаю, разобраться можно:
Variant je=CreateOleObject("JRO.JetEngine");
je.OleFunction("CompactDatabase","Provider=Microsoft.Jet.OLEDB.4.0;"
"Data Source=С:\\NonCompressed.mdb",
"Provider=Microsoft.Jet.OLEDB.4.0;"
"Data Source=C:\\Compressed.mdb;"
"Jet OLEDB:Encrypt Database=True");
← →
sniknik (2002-03-11 12:50) [7]А точно работает? У меня насколько помню проблемы были, вроде отрабатывает ошибок нет а база неупакована. Вот я и решил что только она сама изнутри может.
← →
Valentin2 (2002-03-11 13:16) [8]Я пробовал на базе объёмом 3.8 Mb. После сжатия получилась новая база с другим именем в том же каталоге размером 1.7 Mb, и никаких проблем!
← →
sevylor (2002-03-12 08:01) [9]uses ADOX_TLB, ADODB, ComObj, SysUtils, JRO_TLB;
function CompactDB(dbName:string):string;
const
CConnStr:WideString ="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=";
var
JetEng : JetEngine;
s:string;
begin
s:=ChangeFileExt(dbName,".bak");
if FileExists(s) then DeleteFile(s);
RenameFile(dbName,s);
// Создать экземпляр объекта JetEngine
JetEng := CoJetEngine.Create;
JetEng.CompactDatabase(CConnStr+s,CConnStr+dbName);
JetEng:=nil;
end;
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2002.04.04;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.007 c