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

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

Как создать пустую базу MS Access? [D7]


Константинов ©   (2007-02-01 21:18:00) 

Нашел следующее:

Procedure CreateMSAccessDatabase(filename : String);
var DAO: Variant;
i:integer;
Const Engines:array[0..2] of string=('DAO.DBEngine.36', 'DAO.DBEngine.35', 'DAO.DBEngine');

Function CheckClass(OLEClassName:string):boolean;
var Res: HResult;
begin
Result:=CoCreateInstance(ProgIDToClassID(OLEClassName), nil, CLSCTX_INPROC_SERVER or CLSCTX_LOCAL_SERVER, IDispatch, Res)=S_OK;
end;
begin
For i:=0 to 2 do
if CheckClass(Engines[i]) then
begin
DAO := CreateOleObject(Engines[i]);
DAO.Workspaces[0].CreateDatabase  (filename, ';LANGID=0x0409;CP=1252;COUNTRY=0', 32);
exit;
end;
Raise Exception.Create('DAO engine could not be initialized');
end;


В каком модуле прописано CoCreateInstance?

Зарание спасибо.


Константинов   (2007-02-02 00:53:00) [1]

Уф! Нашел... IDIDENTITY, PRIMARY KEY ( ID )


Константинов   (2007-02-02 00:37:00) [2]

Нарыл тип Autoinc? но что-то не прокатывает в запросе :(


Константинов   (2007-02-01 23:50:00) [3]


> CopyFile(Template, Base, Flag)


Насколько я понял, Вы предлагаете просто скопировать существующий шаблон базы в новое место.

До этого момента я именно так и делал, но...

1. Не хочется таскать за приложением ( при переносе на другой ПК ) пустую базу.

2. Думаю, это никак не вписывается в правила "хорошего тона"  при написании программ.


Константинов   (2007-02-01 23:42:00) [4]

Огромное спасибо!
Еще один небольшой вопрос:

Создаю таблицы:

  FileName := Edit1.Text;
 CreateMDBBase(FileName);
 ADOConnection1.ConnectionString := 'Provider=Microsoft.Jet.OLEDB.4.0;Data Source=' + FileName + ';Mode=ReadWrite|Share Deny None;Persist Security Info=False';
 ADOConnection1.Open;
 ADOCommand1.CommandText := 'CREATE TABLE MapItems ( ID INTEGER NOT NULL PRIMARY KEY, ParenID INTEGER, FileName TEXT(255))';
 ADOCommand1.Execute;


Плохо знаю синтаксис команд SQL.
Тип поля ID должен быть "счетчик" как это сделать?


Anatoly Podgoretsky   (2007-02-01 23:20:00) [5]

CopyFile(Template, Base, Flag)


sniknik   (2007-02-01 22:07:00) [6]

вообщето в ActiveX
но использовать DAO..., гораздо проще

procedure CreateMDBBase(const BaseName: string);
var AE: Variant;
begin
 AE:= CreateOleObject('ADOX.Catalog');
 try
   AE.Create('Provider=Microsoft.Jet.OLEDB.4.0;Data Source='+BaseName);
   AE.ActiveConnection.Close;
 finally
   AE:= Null;
 end;
end;


Наверх

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