C++ Builder
| Главная | Уроки | Статьи | FAQ | Форум | Downloads | Литература | Ссылки | RXLib | Диски |

 
Как создать пустую БД Access
PaiL
Отправлено: 25.11.2003, 05:09


Не зарегистрирован







Подскажите пожалуйста:
Как создать БД Access с одной таблицей из своего приложения?
При запуске приложения в первый раз пользователь вводит путь, где должен находиться mdb файл и как действовать дальше?

Отредактировано PaiL — 25/11/2003, 15:47
** pasha
Отправлено: 25.11.2003, 20:09


Не зарегистрирован







Вот пример на Delphi:

CODE

Функция создания файла базы данных Access.


Автор:       savva, savva@nm.ru, ICQ:126578975, Орел
Copyright:   Сапронов Алексей (Savva)
Дата:        11 октября 2002 г.

function CreateDatabase(DatabaseName:String):boolean;
var
 DBEngine, Workspace: Variant;
const
 dbLangGeneral = ';LANGID=0x0409;CP=1252;COUNTRY=0';
 dbVersion30 = 32;
begin
 result:=false;
 try
   try
       DBEngine := CreateOleObject('DAO.DBEngine.36');
   except
     try {For DAO 3.5}
       DBEngine := CreateOleObject('DAO.DBEngine.35');
     except
raise;
     end;
   end;
   Workspace := DBEngine.Workspaces[0];
   try
     Workspace.CreateDatabase(DatabaseName, dbLangGeneral, dbVersion30);
   except on e0:EOleException do
     ShowMessage(e0.Message);
   end;
 except on e1:EOleException do
   ShowMessage(e1.Message);
 end;
 result:=true;
end;

Пример использования:

...
CreateDatabase(db_name);
...

PaiL
Отправлено: 25.11.2003, 20:25


Не зарегистрирован







Спасибо большое.
Ато я что-то искал искал, везде через ADOX.Catalog примеры только.
Admin
Отправлено: 25.11.2003, 21:06


Владимир

Группа: Администратор
Сообщений: 1190



CODE

Можно применить DAO

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;



На С++Builder видел такой пример:

CODE


#include <dbdaoint.h> // dbLangGeneral + dbVersion30

//---------------------------------------------------------------------------
void __fastcall TForm1::Button2Click(TObject *Sender)
{
Variant vDAO;
Variant vDB;

AnsiString str = ExtractFilePath(Application->ExeName) + "TEST.mdb";

if (FileExists(str)){
ShowMessage("FileExists");
return;
}
// Access95‚ DAO.DBEngine
// Access97‚ DAO.DBEngine.35
// Access2000‚ DAO.DBEngine.36
vDAO = Variant::CreateObject("DAO.DBEngine.35");
vDB = vDAO.Exec(Function("CreateDatabase") << str << dbLangGeneral << dbVersion30);
vDB.Exec(Procedure("Close"));
}


Попробовал — работает, только может ругаться сначала
"Класс не лицензирован для исподбзования"
Тогда regsvc32.exe oleaut32.dll


Отредактировано Admin — 25/11/2003, 22:20

Вернуться в Работа с базами данных в C++Builder