Главная страница
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.03 c
1-1083063501
smolin
2004-04-27 14:58
2004.05.16
Функция выделения подстроки


1-1083728597
Dark Man
2004-05-05 07:43
2004.05.16
Работа с 1С


1-1083487487
mr.Delphin
2004-05-02 12:44
2004.05.16
Диалог


1-1083500489
AndrewVolkov
2004-05-02 16:21
2004.05.16
Какой-то странный глюк при работе с тхт файлом


14-1083029167
[Ph@ntom]
2004-04-27 05:26
2004.05.16
Изображения