![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как создать базу данных Access через ADO? [Access]
ИМХО © (2004-04-22 21:18:00)Нужно создать пустую базу 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', файла такого не находит и орет дурным голосом об этом :(
sniknik (2004-04-22 22:42:00) [1]сто раз уже ложил
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 в какихто случаях (на мелкософте есть описание и патч, но зачем лишние проблемы?)
Anatoly Podgoretsky (2004-04-22 22:40:00) [2]Во первых у тебя тоже бред, твой пример про создание таблицы, а другой про создания базы.
ИМХО (2004-04-22 22:30:00) [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 лучше.
ИМХО (2004-04-22 22:27:00) [4]Дык там то не для Delphi, то не через ADO, то откровенно корявые советы.
sniknik нужен!
Nikolay M. (2004-04-22 22:23:00) [5]Яндекс, "Как создать базу данных Access":
"Результат поиска: страниц — 2581, сайтов — не менее 894".
Неужели ни один из "не менее 894" сайтов не помог?