|
Вопрос # 164/ вопрос открыт / |
|
Как автоматически создать псевдоним базы данных,
причем каталог с файлами должен указать пользователь
и на основе этих данных задается путь к базе в псевдониме.
Функция ExtractFilePath(ParamStr(0)) извлекает путь только
если файл данных находится в том же каталоге что и исполняемый
файл, а нужно указать путь, например если база находится на сетевом диске.
Спасибо за ответ.
 |
Вопрос задал: Sonic-X (статус: Посетитель)
Вопрос отправлен: 19 ноября 2006, 00:41
Состояние вопроса: открыт, ответов: 1.
|
Ответ #1. Отвечает эксперт: Матвеев Игорь Владимирович
Здравствуйте, Alexey!
Как создать псевдоним быза данных - воспользоваться методом TSession.AddStandardAlias(...). Первый параметр - имя псевдонима, второй - путь, третий - тип базы данных.
Выбрать каталог можно с помощью SHGetPathFromIDList(...), если этот диалог не нравится можно взять простой TOpenDialog и выбирать любой файл быза данных, а потом "округлять", оставив только каталог.
Приложение: Переключить в обычный режим- var
- Session : Tsession;
- ---------
-
-
- TForm1.Create(Sender: TObject);
- begin
- with Session do
- begin
- ConfigMode := cmSession;
- try
-
- if OpenDialog1.Execute then
- AddStandardAlias('Alias',
- ExtractFilePath(OpenDialog1.FileName), 'PARADOX');
-
- Table1.Active := True;
- finally
- ConfigMode := cmAll;
- end;
- end;
- end;
Мини-форум вопроса
Всего сообщений: 3; последнее сообщение — 22 ноября 2006, 04:44; участников в обсуждении: 1.
|
Алферьев Виктор Леонидович (статус: Посетитель), 22 ноября 2006, 04:44 [#1]:
Function CreateDateBaseAliasName(Const NewAliasName, NewAliasDir: String;
Const Session: TSession; Const Base: TDatabase): String;
Var Params: TStringList;
_AliasDir: String;
Begin
Result:=NewAliasName;
Session.ConfigMode:= cmPersistent;
If Session.IsAlias(Result) Then Exit;
_AliasDir:=AnsiUpperCase(NewAliasDir);
Base.AliasName:=_AliasDir;
Base.DatabaseName:=_AliasDir;
Base.Exclusive:=True;
Params:= TStringList.Create;
Try
FillCreateParams(Params, NewAliasDir);
Base.Params.Assign(Params);
Session.AddPassword(_Password);
Session.AddAlias(Result, 'PARADOX',Params);
Finally FreeClass(Params); End;
Session.SaveConfigFile;
Base.DatabaseName:=Base.Name;
Base.AliasName:=Result;
End;
|
|
Алферьев Виктор Леонидович (статус: Посетитель), 22 ноября 2006, 04:44 [#2]:
Function CreateDateBaseAliasName(Const NewAliasName, NewAliasDir: String;
Const Session: TSession; Const Base: TDatabase): String;
Var Params: TStringList;
_AliasDir: String;
Begin
Result:=NewAliasName;
Session.ConfigMode:= cmPersistent;
If Session.IsAlias(Result) Then Exit;
_AliasDir:=AnsiUpperCase(NewAliasDir);
Base.AliasName:=_AliasDir;
Base.DatabaseName:=_AliasDir;
Base.Exclusive:=True;
Params:= TStringList.Create;
Try
FillCreateParams(Params, NewAliasDir);
Base.Params.Assign(Params);
Session.AddPassword(_Password);
Session.AddAlias(Result, 'PARADOX',Params);
Finally FreeClass(Params); End;
Session.SaveConfigFile;
Base.DatabaseName:=Base.Name;
Base.AliasName:=Result;
End;
|
|
Алферьев Виктор Леонидович (статус: Посетитель), 22 ноября 2006, 04:44 [#3]:
Function CreateDateBaseAliasName(Const NewAliasName, NewAliasDir: String;
Const Session: TSession; Const Base: TDatabase): String;
Var Params: TStringList;
_AliasDir: String;
Begin
Result:=NewAliasName;
Session.ConfigMode:= cmPersistent;
If Session.IsAlias(Result) Then Exit;
_AliasDir:=AnsiUpperCase(NewAliasDir);
Base.AliasName:=_AliasDir;
Base.DatabaseName:=_AliasDir;
Base.Exclusive:=True;
Params:= TStringList.Create;
Try
FillCreateParams(Params, NewAliasDir);
Base.Params.Assign(Params);
Session.AddPassword(_Password);
Session.AddAlias(Result, 'PARADOX',Params);
Finally FreeClass(Params); End;
Session.SaveConfigFile;
Base.DatabaseName:=Base.Name;
Base.AliasName:=Result;
End;
|
Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.
|