8. В компоненте TDatabase свойство LoginPrompt устанавливаем в 'False'. Если в секции перекрытых параметров (Parameter Overrides) задан пароль (ключ PASSWORD) и свойство LoginPrompt установлено в 'False', при соединении с базой данный пароль запрашиваться не будет. Предупреждение: при неправильно указанном пароле в секции Parameter Overrides и неактивном свойстве LoginPrompt вы не сможете получить доступ к базе данных, поскольку нет возможности ввести правильный пароль – диалоговое окно "Ввод пароля" отключено свойством LoginPrompt.
9. Нажимаем кнопку OK и закрываем окно редактора.
10. В компоненте TQuery свойству DatabaseName присваиваем 'MyNewAlias'.
11. В компоненте TDataSource свойству DataSet присваиваем 'Query1'.
12. В компоненте DBGrid свойству DataSource присваиваем 'DataSource1'.
13. Создаем в компоненте TButton обработчик события OnClick.
procedure TForm1.Button1Click(Sender: TObject);
begin
Query1.SQL.Clear;
Query1.SQL.ADD('SELECT DISTINCT * FROM CUSTOMER C, SALES S WHERE (S.CUST_NO = C.CUST_NO) ORDER BY C.CUST_NO, C.CUSTOMER');
Query1.Active:= True;
end;
14. Запускаем приложение.
Этот пример выводит диалоговое окно и создает псевдоним на основе информации, введенной пользователем.
Директория, имя сервера, путь, имя базы данных и другая необходимая информация для получения псевдонима может быть получена приложением из диалогово окна или конфигурационного .INI файла.
1. Выполняем шаги 1-11 из примера #1.
2. Пишем следующий обработчик события OnClick компонента TButton:
procedure TForm1.Button1Click(Sender: TObject);
var
NewString: string;
ClickedOK: Boolean;
begin
NewString:= 'C:\';
ClickedOK:= InputQuery('Database Path', 'Path: –> C:\DELPHI\DEMOS\DATA', NewString);
if ClickedOK then begin
Database1.DatabaseName:= 'MyNewAlias';
Database1.DriverName:= 'STANDARD';
Database1.Params.Clear;
Database1.Params.Add('Path=' + NewString);
Table1.DatabaseName:= 'MyNewAlias';
Table1.TableName:= 'CUSTOMER';
Table1.Active:= True;
DataSource1.DataSet:= Table1;
DBGrid1.DataSource:= DataSource1;
end;
end;
3. Запускаем приложение.
Информация о псевдонимах BDE
Как через конфигурацию IDAPI получить физический каталог расположения базы данных, зная ее псевдоним?
Обратите внимание на метод GetAliasParams класса TSession.
Возвращенная строка будет содержать искомый путь.
Я пользуюсь следующей функцией:
uses 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;
Мультимедиа
Аудио-компакт
Получение идентификатора диска
Как получить идентификатор находящегося в CD-ROM'е аудио-компакта?
const
MCI_INFO_PRODUCT = $00000100;
MCI_INFO_FILE = $00000200;
MCI_INFO_MEDIA_UPC = $00000400;
MCI_INFO_MEDIA_IDENTITY = $00000800;
MCI_INFO_NAME = $00001000;
MCI_INFO_COPYRIGHT = $00002000;
{ блок параметров для командного сообщения MCI_INFO }
type
PMCI_Info_ParmsA = ^TMCI_Info_ParmsA;
PMCI_Info_ParmsW = ^TMCI_Info_ParmsW;
PMCI_Info_Parms = PMCI_Info_ParmsA;
TMCI_Info_ParmsA = record
dwCallback: DWORD;