|
через DAO можно примерно так:
| 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; |
Однако гораздо проще подшить пустую базу данных в ресурсы и дело с концом...
Автор: Vit
| const CLASS_DBEngine: TGUID = '{00000100-0000-0010-8000-00AA006D2EA4}'; dbLangCyrillic = ';LANGID=0x0409;CP=1252;COUNTRY=0'; dbOption = 0 // or $20 // ? похоже создание в формате Access 97 ;
procedure CreateMSAccessDatabase(FileName :String); begin Variant(CreateOleObject(ClassIDToProgID(CLASS_DBEngine))) .Workspaces[0] .CreateDatabase (FileName, dbLangCyrillic, dbOption); end; |
Автор: Петрович
|