Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.04.04;
Скачать: CL | DM;

Вниз

Здравствуйте, уважаемые коллеги!   Найти похожие ветки 

 
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;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.011 c
3-9379
KPOT
2002-03-12 12:30
2002.04.04
TIBDatabase iz DLL


14-9610
novomod
2002-02-21 23:44
2002.04.04
Математика.Функция.Алгоритм.Help.


4-9671
Дмитрий Д.
2002-01-30 07:20
2002.04.04
необходимо отследить какие файлы были измненены или созданы


3-9381
pusrg
2002-03-11 20:48
2002.04.04
Сортировка кешированной таблицы


3-9377
JibSkeart
2002-03-08 18:25
2002.04.04
Пернести базу MSSQL 6.5 на MSSQL 7.xx Реально ли?