Форум: "Базы";
Текущий архив: 2004.05.16;
Скачать: [xml.tar.bz2];
ВнизКак создать базу данных 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;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.04 c