![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как создать пустую базу 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;