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
|
|