Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Как создать базу данных 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" сайтов не помог?


Наверх

Титульная страница Поиск, карта сайта Написать письмо