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

Вниз

Как создать базу данных Access через ADO?   Найти похожие ветки 

 
ИМХО ©   (2004-04-22 21:18) [0]

Нужно создать пустую базу Access с текстовым полем. Уже запарился, но не получается.
Делаю так:

const
 ConnStr =
   "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=%s;Persist Security Info=False";
var
 ADOConnection1: TADOConnection;
 Create_Str: string;
begin
 Create_Str := "CREATE TABLE  (First char(255))";
 ADOConnection1 := TADOConnection.Create(nil);
 try
   ADOConnection1.LoginPrompt := False;
   ADOConnection1.Provider := "Microsoft.Jet.OLEDB.4.0";
   
   ADOConnection1.ConnectionString := Format(ConnStr, ["C:\1\temp.mdb"]);
   ADOConnection1.Execute(Create_Str);

 finally
   ADOConnection1.Free;
 end;

Как я понял, он пытается сначала открыть "C:\1\temp.mdb", файла такого не находит и орет дурным голосом об этом :(


 
Nikolay M. ©   (2004-04-22 22:23) [1]

Яндекс, "Как создать базу данных Access":
"Результат поиска: страниц — 2581, сайтов — не менее 894".
Неужели ни один из "не менее 894" сайтов не помог?


 
ИМХО ©   (2004-04-22 22:27) [2]

Дык там то не для Delphi, то не через ADO, то откровенно корявые советы.

sniknik нужен!


 
ИМХО ©   (2004-04-22 22:30) [3]

Вот, к примеру, первые несколько результатов (из Яндекса):

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;

Во-первых, это DAO.
Во-вторых, это бред, код не рабочий, у Шкульника пример для DAO лучше.


 
Anatoly Podgoretsky ©   (2004-04-22 22:40) [4]

Во первых у тебя тоже бред, твой пример про создание таблицы, а другой про создания базы.


 
sniknik ©   (2004-04-22 22:42) [5]

сто раз уже ложил

function TDMod.CreateMDBBase(const BaseName: string): boolean;
var AdoEngine: Variant;
begin
 result:= false;
 if Length(BaseName)=0 then begin
   DoIfError("Не определено имя базы");
   exit;
 end;
 try
   try
     AdoEngine:= CreateOleObject("ADOX.Catalog");
     AdoEngine.Create("Provider=Microsoft.Jet.OLEDB.4.0;Data Source="+GetMdbName(BaseName)+";Jet OLEDB:Engine Type=5;");
     AdoEngine.ActiveConnection.Close;
     result:= true;
   except
     on E: Exception do DoIfError(E.Message);
   end;
 finally
   AdoEngine:= Null;
 end;
end;

непонятное (возможно)
GetMdbName - функция своя делает из пустого имени имя с путем и расширением (просто у меня по разному может приходить), задая явно.
DoIfError тоже собственная функция, ведел лог, можеш просто выкинуть или чтото аналогичное.

DAO лутше не исопользовать DAO конфликтует с Jet в какихто случаях (на мелкософте есть описание и патч, но зачем лишние проблемы?)



Страницы: 1 вся ветка

Текущий архив: 2004.05.16;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.022 c
1-1083235656
Elast
2004-04-29 14:47
2004.05.16
DBGridEh


3-1082468480
MakNik
2004-04-20 17:41
2004.05.16
Как освобождать память, занятую SQL-сервером?


3-1082627560
vantage10
2004-04-22 13:52
2004.05.16
учет рабочего времени


8-1069399145
truntaev
2003-11-21 10:19
2004.05.16
как быстро сравнить 2 объекта типа tbitmap


8-1077019218
Qwer
2004-02-17 15:00
2004.05.16
Слои