Главная | Обратная связь | Поможем написать вашу работу!
МегаЛекции

Поиск и замена (ReplaceDialog)




Диалог используется для организации поиска фрагмента текста по образцу поиска, заданного свойством FindText, и замены найден­ного фрагмента, на текст, указанный свойством ReplaceText. Событие OnReplace возникает при нажатии кнопки Заменить или Заменить все.

Выбор диска (DriveComboBox)

Диалог (панель Win3.1) позволяет выбрать нужный диск, имя которого помещается в свойстве Drive.

Выбор каталога (DirectoryListBox)

Диалог (панель Win3.1) позволяет выбрать нужный каталог, имя которого помещается в свойстве Directory, а имя диска ‑ в Drive. Для включения возможности пере­хо­да на другой диск нужно поместить компонент DriveComboBox и в его свойстве DirList указать имя компонента DirectoryListBox.

Вопросы для самопроверки и контроля

Вопросы для самопроверки

1. Для чего используется репозиторий (repository)?

2. Каково назначение свойства Name?

3. Каково назначение свойства Caption?

4. Каково назначение свойства Transparent?

5. Каково назначение свойства Visible?

6. Каково назначение свойства AutoSize?

7. Каково назначение свойства Align?

Контрольные вопросы

1. Каково назначение свойства Enabled?

2. Каково назначение свойства Tag?

3. Каково назначение свойства Text?

4. Каково назначение события OnClick?

5. Каково назначение события OnChange?

6. Каково назначение события Refresh?

7. Каково назначение компонента ListBox?

8. Каково назначение компонента ComboBox?

9. Каково назначение компонента Button?

10. Каково назначение компонента CheckBox?

11. Каково назначение компонента RadioButton?

12. Каково назначение компонента Memo?


Глава 3. Работа с базами данных

Основные понятия

База данных (БД) ‑ это сово­куп­ность взаимо­связанных двумер­ных таблиц. Система управления БД (СУБД) ‑ это специальный ком­плекс прог­рамм, пред­наз­начен­ных для автоматизации проце­дур создания, хранения, ведения и иcполь­зования баз данных. Су­щест­вуют персональные (FoxPro, Paradox, Access, Dbase) и много­поль­зовательские полнофункциональные, промышленные СУБД (Oracle, Inter­Base, Microsoft SQL Server, Progrеss, Informix, SyBase).

Имеется несколько архитектур использования баз данных [2; 7].

Локальная ‑ приложение и база находятся на одном компьютере (п. 3.2).

Файл‑серверная ‑ база данных находится на другом компьютере, который называется файл‑сервером, и приложение обращается за информацией к файлу‑серверу. Недостатком является перегрузка каналов связи, так как фактически вся база или ее большая часть копируется по каналам на клиентскую машину (п. 3.2).

Клиент‑серверная ‑ архитектура аналогичная предыдущей, но запрос выполняется на серверной машине, что разгружает каналы связи (п. 3.14).

Распределенная (компонентная) ‑ к серверам баз добавляются серверы при­ложений, на которых выполняются приложения клиентов. Клиентская машина служит для ввода и отображения результирующей информации.

Интернетная ‑ доступ к базе осуществляется из броузера, что максималь­но разгружает клиентскую машину (тонкий клиент) и дает возможность использовать готовые броузеры и программы.

Каждая таблица состоит из строк (записей) и столбцов (полей). Ключом таблицы (первичным ключом) называется поле (простой ключ) или комбинация из группы полей (составной ключ), однозначно опреде­ляю­щая каждую запись в таблице. Индекс (вторичный ключ) аналогичен ключу, но может быть неуникальным. Ключи и индексы используются для сортировки, поиска записей и для связывания таблиц.

Для доступа к базе используются технология Borland Database Engine (BDE) фирмы Borland или ActiveX Data Objects (ADO) фирмы Microsoft (п. 3.14). Доступ к базе осуществляется через специальные драйверы. Используя данные технологии, мож­но не привязывать программу к конкретной СУБД, переходить к дру­гой СУБД, изменяя только настройку BDE или внешние источники ODBC для ADO, а не исходные тексты приложе­ния.

Реко­мен­дует­ся следующий порядок создания простого приложения, использующего базу данных (если уже база создана средствами СУБД, то шаги 1, 3, 4 пропускаются) :

1. Создается отдельная папка для приложения под именем при­ло­­же­ния. В эту папку помещаются все компоненты приложения и сама база.

2. Средствами администратора BDE или ODBC база регистрируется c ука­­за­нием данных о базе, типе СУБД и имени алиасы (псевдодима) для BDE или внешнего источника данных ODBC для ADO.

Реко­мен­дуется вместо алиасы BDE создавать внешний источник данных ODBC средствами администратора ODBC и использовать его при работе с технологиями BDE и ADO (п. 3.14).

3. Вызывается Delphi, затем Database Desktop и ус­та­нав­ли­вается ра­бо­­чий каталог на папку с приложением (выбором нужной алиасы).

4. Средствами Database Desktop создаются исходные свободные таб­ли­цы базы данных.

Реко­мен­дуется не связывать эти таблицы и не запол­нять их данными (буквы кириллицы нельзя использовать при вводе дан­ных). Работа с Database Desktop заканчивается.

Для существующих баз данных шаги 3 и 4 пропускаются.

5. Создается модуль базы данных (п. 3.3). Компонентам Table и Data Source прис­ваивают­ся подходящие имена для исходных таблиц латинскими буквами. Свойству таблицы Active прис­ва­ива­ется значение True (если есть ошибки, то выведется сообщение).

6. Свойству таблицы Active прис­ва­ива­ется значение False, и фор­ми­руются поля соответствия LookUp (п. 3.6) и вычисляемые поля и проце­ду­ры формирования их значений.

7. Для всех полей таблиц в свойстве поля Display­La­bel прис­ва­иваются их наименования на русском языке и устанавливается нужный порядок их следования.

8. Создаются базовый и другие зап­ро­сы (п. 3.7.1).

9. Аналогично таблицам формируются наименования полей.

10. Свойству таблиц и запросов Active прис­ва­ива­ется значение True.

11. Модуль базы сохраняется под именем DataModule. При исполь­зо­вании этого модуля в других мо­ду­лях (формах) этого приложения его нужно подключать командой File/Use Unit. Мо­дуль подключается к другому приложению командой Project/Add to Project.

12. Для таблиц и запросов создаются формы (Window­State=wsMaximized) вход­ных документов для их заполнения и просмотра с подключением модуля базы данных. На формах размещаются ком­по­нен­ты DBNa­v­igator (DataSource, Align=alBottom), DBGrid (DataSource, Align=alClient). Устнавливаются нужные размеры колонок форм.

13. Создается пустая стартовая форма (WindowState=wsMaximized). Командой File/Use Unit подключаются все модули. На форме формируется меню вы­зова форм входных документов и других модулей.

14. Выполняется приложение и заполняются родительские, а затем дочерние таблицы базы данных.

15. Формируются запросы, диаграммы, отчеты, другие компоненты.

16. Сформированное ранее меню дополняется новыми пунктами.

17. Проверяется приложение, и его разработка завершается.

Создание базы данных

Для создания таблицы автономной базы имеется приложение Database Desktop, которое вызывается командой Tools/Database Desktop.

Оно имеет собственное окно, меню и кнопки (рис. 3.2.1).

Рис. 3.2.1. Окно Database Desktop

 
 

Но­вая таблица создается построителем таблиц (рис. 3.2.2), который вызы­вается командой File/New/Table. На запрос тип СУБД выберем Paradox 7.

Рис. 3.2.2. Окно построителя таблиц

 

Рассмотрим основные колонки и поля окна конструктора таблиц.

Field Name ‑ идентификаторы полей (не более восьми латинских букв и цифр для совместимости с другими СУБД).

Type ‑ тип поля (указывается выбором из контекстного меню): Alpha (A ‑ строка из не более чем 255, символов), Number (N ‑ число с плавающей точ­­кой), Money ($ ‑ аналогичен типу Number, но добавляется денежный знак), Short (S ‑ целое число в диапазоне ­‑32768..32767), LongInteger (I ­ це­лое чис­ло в диапазоне-2147483647..2147483647), BCD (# ‑ число в двоич­но-десятичном формате), Date (D ‑ дата), Time (T ‑ время), Timestamp (@ ‑ да­та и время), Memo (M ‑ строка любой длины), Formatted Memo (F ‑ ана­ло­ги­чен Memo, но может содержать форматированный текст), Graphic (G ‑ изоб­ражение BMP, PCX, TIF, GIF, EPS), OLE (O ‑ объект OLE), Logical (L ‑ ло­гическое ‑ T, F), Autoincrement (+ ‑ при добавлении записи, авто­ма­ти­чес­ки формируется уникальное значение), Binary (B – последо­ва­тель­ность бай­­­­тов любой длины), Bytes (Y ‑ последовательность не более чем 255 байтов).

Size ‑ размер поля в байтах.

Key ‑ признак первичного ключевого поля (двойной щелчок по колонке).

Tables properties ‑ дополнительные свойства таблицы: Secondary Index (за­да­ние вторичных индексов), Validity Checks (ограничения на ввод значе­ний полей), Password Security (определение пароля), Referential Integrity (опре­деление ссылочной целостности между таблицами), Table Language. (за­дание языка), Table Lookop (задание полей просмотра), Depending Tables (зависимые дочерние таблицы).

Required Filed ‑ признак обязательного заполнения поля.

Minimum..., Maximum... ‑ начало и конец диапазона допустимых значений.

Default value ‑ значение по умолчанию при добавлении пустой записи.

Picture,Assist ‑шаблон и построитель шаблона значения поля (рис. 3.2.3).

Рис. 3.2.3. Окна построителей шаблона и индекса

 

Вторичные ключи (индексы) создаются путем выбора из списка свой­ств таблицы строки Secondary Indexes, и после нажатия кнопки Define вы­во­дится окно Define Secondary Index (рис. 3.2.2). Используя кнопки со стрел­ками или двойными щелчками, перенесем нужное поле или нес­колько полей, если ключ составной, в список индексов. Имеются пе­ре­клю­ча­тели: Unique (уникальный индекс), Case sensitive (учет ре­гист­ров стро­ко­вых полей), Descending (сортировка по возрастанию). Кнопкой OK прои­зво­дится выход с указанием имени индекса IndKz. Поле, которое яв­ляется пер­вич­ным ключом другой родительской таблицы, называют внеш­ним клю­чом. Для связи таблиц обычно создают индексы по внешним клю­чам. Пос­ле формирования таблицы она сохраняется, если нажать кнопку Save As, под указанным именем; при этом в поле имени файла можно ука­зать как пол­­ное имя с каталогами, так и псевдоним базы (Alias). Псевдоним поз­во­ляет не привязываться к каталогу, который может меняться.

Для примера создадим базу из трех таблиц: Стройки (Stroiki), Заказчики (Zakazhiki) и Подрядчики (Podrjdhiki). В начале создадим ката­лог Stroitelstvo, в котором будет находиться наша база.


Для создания алиасы Stroiki вызовем администратор BDE (BDE Admi­nis­trator) из меню настройки Windows или группы программ Delphi или из меню Delphi командой Database/Eplore/Object/BDE Admi­nis­trator (рис.3.2.4). Далее командой Object/New создается алиаса Stroiki.

Рис. 3.2.4. Окно администратора BDE

 

Займемся созданием таблиц.

Таблица Stroiki (рис.3.2.2) будет иметь поля: Ns (наименование строй­ки, тип A (50)), Kz, Kp (коды заказчика и подрядчика, S), Ds (дата на­ча­ла строительства, D), Ss (сметная стоимость, $), Fs (освоенная сумма, $), M (мощность, N), Em (единица мощности, например, количество мест для школ, A(10)). Индексами являются поля: Kz (индекс под именем indKz), Kp (indKp). Первичный ключ – поле Ns (можно его не задавать). Все поля, кроме Fs, M, Em, являются обязательными.

Таблицы Zakazhiki/Podrjdhiki будут иметь ключевые поля Kz/Kp (код заказчика/подрядчика, S) и поля Nz/Np (наименование заказчика/под­ряд­чи­ка, A(30)) соответственно.

Для корректировки и просмотра открытой таблицы имеются команды Table/Restructure (кнопка Restructure) и Table/Into Structure. Для переименования таблицы следует сохранить ее под новым именем.

Создание перекрестных ссылок (связей) между таблицами прои­зводится в следующем порядке. Командой File/Open/Tаble от­кры­вает­ся дочерняя таблица Stroilki*, кнопкой Restructure переходим в режим редак­ти­рования. В списке Table pro­perties выбираем строку Refe­ren­­tial Integrity (целост­ность ссы­­­лок), нажмем кнопку Define и появ­ляет­ся одно­имен­­ное ок­но (рис. 3.2.5). Из спис­ка Fields вы­би­раем поле Kz и пере­но­сим его (двойным щел­чком) в поле Child fields (до­чер­нее). Щелк­нем два­ж­­ды на ст­роке Zakazhiki в спис­ке Table, и его ключевое поле Kz по­мес­тится в поле Parent’s key (клю­­че­­­вое поле родительской таблицы).

Рис. 3.2.5. Окно установки связей между таблицами

 

Переключатель Cascade задает режим удаления всех дочерних записей (строек одного заказчика), при удалении родительской записи (заказчика из таблицы заказчиков) и корректировки ключей дочерних записей при изменении родительского ключа (кода заказчика из таблицы заказчиков). Кнопкой OK сохраним связь под именем LinkKz. Аналогично установим связь LinkKp по коду подрядчика между дочерней таблицей строек и родительской таблицей подрядчиков.

Form2.Query1.Active:=False;{закрытие запроса} End;

Внимание!

1. Наличие связей между таблицами может вызвать не­у­доб­ство при редактировании дочерней таблицы (в форме будут толь­ко записи с текущим значением поля связи родительской таб­ли­цы) и в полях соответ­ст­вия не будет списка всех значений поля соот­вет­ст­вия (п. 3.6). Поэтому реко­мен­ду­ет­ся дополнительно описать дочерние таблицы без указания связей и на них ссы­лать­ся при формировании формы либо вообще не связывать таблицы (связать их можно в запросе).

2. В именах таблиц не используйте буквы «ч» и «ё».

Для заполнения и редактирования таблицы, после ее связывания с другими таблицами, используется кнопка EditData и меню Record приложения Database Desktop (кириллицу при вводе использовать нельзя).


Создание модуля данных

Модуль данных содержит объекты, связанные с базой, и исполь­зует­ся для централизованного управления этими объектами. Его создание произ­во­дится командой File/New/Data Module (рис. 3.3.1). Имя создан­ного модуля данных лучше сохранить для наглядности под новым именем, на­при­мер: DataModulStroiki. Разместим компонент Table с панели Data Ac­­cess на стра­­ни­це Components (рис. 3.3.1) и выделим его. Зададим свой­ства: DataBaseName =Stroiki (псевдоним базы), TableName =Stroiki (имя табли­цы), Name =Stroiki (имя компонента приравняем имени таблицы для наг­ляд­ности), Active =True (чтобы можно было обращаться к таблице из прог­рам­мы). Аналогично сде­­лаем для двух остав­ши­х­ся таблиц. Да­лее раз­местим компо­нент Data Source (ис­точ­­ник дан­­ных) и вы­делим его. За­да­дим свойства: Da­ta­­­Set =Stroiki (имя таб­­­­­­­­лицы) (п.3.4.2), Name =Sourcestroiki (имя ком­­­понента).

Рис. 3.3.1. Окно модуля данных

 

То же проделаем и c другими таблицами. Получим модуль (рис.3.3.1). Источник данных служит посредником между таблицей базы и экранными формами, что позволяет переходить на другие СУБД, меняя только настройку компонента ‑ источника данных, а не программы. После открытия проекта нужно вызвать этот модуль командой View/Units/Unit2.

Поля в таблице можно использовать как динамические (dynamic) либо как постоянные (persistent). Динамические поля должны быть в таблице, и их можно редактировать. Постоянные поля (виртуальные или псевдополя) могут отсутствовать в таблице, и их значения вычисляются. К имени постоян­ного поля автоматически добавляется имя компонента Table. Для примера все поля таблицы строек сделаем постоянными и добавим псевдополе Os (Os=Ss‑Fs). Для этого щелкнем правой кнопкой мыши на таблице Stroiki в окне модуля данных и выберем команду Field Editor (редактор полей), появится пустое окнo DataModule2.Stroiki. Из контекст­ного меню этого окна выберем команду Add all fields (добавить все поля). Командой New Field вызовем окно для формирования вычисляемого (Calculated) псевдополя Os типа Сurrency. Составим процедуру обработки события OnCalcFields (п. 3.4.1) таблицы Stroiki для вычисления значения (свойство Value) псевдополя Os:

Procedure TDataModule2.StroikiCalcFields(DataSet: TDataSet);

Begin StroikiOs.Value:=StroikiSs.Value‑StroikiFs.Value; End;

При ссылках на объекты модуля данных объект уточняется именем модуля DataModule2 (DataModule2.SourceStroiki).

Рекомендуется для всех полей задавать сло­вес­ные наимено­ва­ния полей в их свойствах DisplayLabel через редактор по­лей, которые вы­во­дятся в формах и компонентах вместо латинских имен полей.

Рекомендуется модуль базы данных создавать под содержа­тель­ным име­нем в пап­ке с базой, включать его в новый проект коман­дой Project/Add to pro­ject и подключать его к головному или друго­му модулю командой File/Use Unit.

Поделиться:





Воспользуйтесь поиском по сайту:



©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...