Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Задание псевдонима программным путем 
:(
    Опции темы
Poseidon
Дата 18.5.2005, 14:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Delphi developer
****


Профиль
Группа: Комодератор
Сообщений: 5273
Регистрация: 4.2.2005
Где: Гомель, Беларусь

Репутация: 3
Всего: 133



Эта информация поможет вам разобраться в вопросе создания и использования ПСЕВДОНИМОВ баз данных в ваших приложениях. 

Вне Delphi создание и конфигурирование псевдонимов осуществляется утилитой BDECFG.EXE. Тем не менее, применяя компонент TDatabase, вы можете в вашем приложении создать и использовать псевдоним, не определенный в IDAPI.CFG. 

Важно понять, что создав псевдоним, использовать его можно только в текущем сеансе вашего приложения. Псевдонимы определяеют расположение таблиц базы данных и параметры связи с сервером баз данных. В конце концов, вы получаете преимущества использования псевдонимов в пределах вашего приложения без необходимости беспокоиться о наличии их в конфигурационном файле IDAPI.CFG в момент инициализации приложения. 

Некоторые варианты решения задачи: 

Пример #1: 

Пример #1 создает и конфигурирует псевдоним для базы данных STANDARD (.DB, .DBF). Псевдоним затем используется компонентом TTable. 

Пример #2: 

Пример #2 создает и конфигурирует псевдоним для базы данных INTERBASE (.gdb). Псевдоним затем используется компонентом TQuery для подключения к двум таблицам базы данных. 

Пример #3: 

Пример #3 создает и конфигурирует псевдоним для базы данных STANDARD (.DB, .DBF). Демонстрация ввода псевдонима пользователем и его конфигурация во время выполнения программы. 

Пример #1: Используем базу данных .DB или .DBF (STANDARD) 

Создаем новый проект. 
Располагаем на форме следующие компоненты: - TDatabase, TTable, TDataSource, TDBGrid, and TButton. 
Дважды щелкаем на компоненте TDatabase или через контекстное меню (правая кнопка мыши) вызываем редактор базы данных. 
Присваиваем базе данных имя 'MyNewAlias'. Это имя будет выполнять роль псевдонима в свойстве DatabaseName для компонентов типа TTable, TQuery, TStoredProc. 
Выбираем в поле Driver Name (имя драйвера) пункт STANDARD. 
Щелкаем на кнопке Defaults. Это автоматически добавляет путь (PATH=) в секцию перекрытых параметров (окно Parameter Overrides). 
Устанавливаем PATH= to C:\DELPHI\DEMOS\DATA (PATH=C:\DELPHI\DEMOS\DATA). 
Нажимаем кнопку OK и закрываем окно редактора. 
В компоненте TTable свойству DatabaseName присваиваем 'MyNewAlias'. 
В компоненте TDataSource свойству DataSet присваиваем 'Table1'. 
В компоненте DBGrid свойству DataSource присваиваем 'DataSource1'. 
Создаем в компоненте TButton обработчик события OnClick. 

Код

procedure TForm1.Button1Click(Sender: TObject); 
begin 
  Table1.Tablename:= 'CUSTOMER'; 
  Table1.Active:= True; 
end; 



Запускаем приложение. 
*** В качестве альтернативы шагам 3 - 11, вы можете включить все эти действия в сам обработчик: 

Код

procedure TForm1.Button1Click(Sender: TObject); 
begin 
  Database1.DatabaseName:= 'MyNewAlias'; 
  Database1.DriverName:= 'STANDARD'; 
  Database1.Params.Clear; 
  Database1.Params.Add('PATH=C:\DELPHI\DEMOS\DATA'); 
  Table1.DatabaseName:= 'MyNewAlias'; 
  Table1.TableName:= 'CUSTOMER'; 
  Table1.Active:= True; 
  DataSource1.DataSet:= Table1; 
  DBGrid1.DataSource:= DataSource1; 
end; 



Пример #2: Используем базу данных INTERBASE 

Создаем новый проект. 
Располагаем на форме следующие компоненты: - TDatabase, TQuery, TDataSource, TDBGrid, and TButton. 
Дважды щелкаем на компоненте TDatabase или через контекстное меню (правая кнопка мыши) вызываем редактор базы данных. 
Присваиваем базе данных имя 'MyNewAlias'. Это имя будет выполнять роль псевдонима в свойстве DatabaseName для компонентов типа TTable, TQuery, TStoredProc. 
Выбираем в поле Driver Name (имя драйвера) пункт INTRBASE. 
Щелкаем на кнопке Defaults. Это автоматически добавляет путь (PATH=) в секцию перекрытых параметров (окно Parameter Overrides). 
   SERVER NAME=IB_SERVEER:/PATH/DATABASE.GDB 
   USER NAME=MYNAME 
   OPEN MODE=READ/WRITE 
   SCHEMA CACHE SIZE=8 
   LANGDRIVER= 
   SQLQRYMODE= 
   SQLPASSTHRU MODE=NOT SHARED 
   SCHEMA CACHE TIME=-1 
   PASSWORD= 

Устанавливаем следующие параметры 
   SERVER NAME=C:\IBLOCAL\EXAMPLES\EMPLOYEE.GDB 
   USER NAME=SYSDBA 
   OPEN MODE=READ/WRITE 
   SCHEMA CACHE SIZE=8 
   LANGDRIVER= 
   SQLQRYMODE= 
   SQLPASSTHRU MODE=NOT SHARED 
   SCHEMA CACHE TIME=-1 
   PASSWORD=masterkey 

В компоненте TDatabase свойство LoginPrompt устанавливаем в 'False'. Если в секции перекрытых параметров (Parameter Overrides) задан пароль (ключ PASSWORD) и свойство LoginPrompt установлено в 'False', при соединении с базой данный пароль запрашиваться не будет. Предупреждение: при неправильно указанном пароле в секции Parameter Overrides и неактивном свойстве LoginPrompt вы не сможете получить доступ к базе данных, поскольку нет возможности ввести правильный пароль - диалоговое окно "Ввод пароля" отключено свойством LoginPrompt. 
Нажимаем кнопку OK и закрываем окно редактора. 
В компоненте TQuery свойству DatabaseName присваиваем 'MyNewAlias'. 
В компоненте TDataSource свойству DataSet присваиваем 'Query1'. 
В компоненте DBGrid свойству DataSource присваиваем 'DataSource1'. 
Создаем в компоненте 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;
 

Запускаем приложение. 


Пример #3: Ввод псевдонима пользователем 

Этот пример выводит диалоговое окно и создает псевдоним на основе информации, введенной пользователем. 

Директория, имя сервера, путь, имя базы данных и другая необходимая информация для получения псевдонима может быть получена приложением из диалогово окна или конфигурационного .INI файла. 


Выполняем шаги 1-11 из примера #1. 
Пишем следующий обработчик события 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; 


Запускаем приложение. 


--------------------
Если хочешь, что бы что-то работало - используй написанное, 
если хочешь что-то понять - пиши сам...
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Базы данных и репортинг"
Vit
Петрович

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами


Обязательно указание:

1. Базы данных (Paradox, Oracle и т.п.)

2. Способа доступа (ADO, BDE и т.д.)


  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи
  • Вопросы по SQL и вопросы по базам данных не связанные с Дельфи задавать здесь

FAQ раздела лежит здесь!


Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Vit, Петрович.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Базы данных и репортинг | Следующая тема »


 




[ Время генерации скрипта: 0.0506 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.