| 
| 
 | Вопрос # 716/ вопрос открыт / | 
 |  Здравствуйте, уважаемые эксперты!Можно ли задать псевдоним базы данных и изменить ее расположение на диске во время выполнения программы, а не через BDE administrator? Если да то как? Спасибо!
 
|  |   Вопрос задал: Евгений Eklmn (статус: Посетитель)Вопрос отправлен: 9 июля 2007, 20:49
 Состояние вопроса: открыт, ответов: 1.
 |  Ответ #1. Отвечает эксперт: Градов Ю.М. Здравствуйте, Трофимов Евгений!Посмотрите код в приложении, может поможет
 Приложение:Переключить в обычный режим procedure TForm1.Button1Click(Sender: TObject);var  MyList: TStringList;begin  MyList := TStringList.Create;  try    with MyList do    begin      Add('SERVER NAME=IB_SERVER:/PATH/DATABASE.GDB');      Add('USER NAME=MYNAME');    end;    Session1.AddAlias('NewIBAlias', 'INTRBASE', MyList);  finally    MyList.Free;  end;end;  
|  | Ответ отправил: Градов Ю.М. (статус: 8-ой класс)Время отправки: 9 июля 2007, 20:58
 Оценка за ответ: 5
 |  
 Мини-форум вопросаВсего сообщений: 3; последнее сообщение — 11 июля 2007, 21:45; участников в обсуждении: 2. 
|   | Евгений Eklmn (статус: Посетитель), 10 июля 2007, 11:05 [#1]:Как сопоставить таблицу с бд? Спасибо! Генерация случайных чисел - слишком важный вопрос, чтобы оставлять его на волю случая. (Роберт Ковзю, Окриджская лаборатория) |  
|   | Градов Ю.М. (статус: 8-ой класс), 11 июля 2007, 21:42 [#2]:Используйте Session.GetAliasParams. В ответ вы получите объект TStrings, откуда вы можете получить значение для переменной 'PATH'. Для получения дополнительной информации обратитесь к электронной справке к разделу, описывающему TSession. Объект Session объявлен в модуле DB. 
 
 
 uses  db;
 
 var
 aliaspath: string[128];
 begin
 aliaspath := Session.GetAliasParams['MyAlias'].values['PATH'];
 end;
 
 
 
 
 
 uses SysUtils,DbiProcs, DBiTypes;
 ...
 
 function GetDataBaseDir(const Alias : string): String;
 (* Возвращает каталог базы данных, на которую
 ссылается псевдним (без конечного обратного слеша) *)
 var
 sp: PChar;
 Res: pDBDesc;
 begin
 try
 New(Res);
 sp := StrAlloc(length(Alias)+1);
 StrPCopy(sp,Alias);
 if DbiGetDatabaseDesc(sp,Res) =  0 then
 Result := StrPas(Res^.szPhyName)
 else
 Result := '';
 finally
 StrDispose(sp);
 Dispose(Res);
 end;
 end;
 |  
|   | Градов Ю.М. (статус: 8-ой класс), 11 июля 2007, 21:45 [#3]:function GetPathNameByAlias(sAlias: string): string; var
 Database: TDatabase;
 pszDir: PChar;
 begin
 Database := TDatabase.Create(nil); {allocate memory}
 pszDir := StrAlloc(255);
 try
 Database.AliasName := sAlias;
 Database.DatabaseName := 'TEMP';
 Database.Connected := True;
 DbiGetDirectory(Database.Handle, True, pszDir);
 Database.Connected := False;
 Result := StrPas(pszDir);
 finally
 Database.Free;
 end;
 end;
 |  Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте. |