Расширение функционала работы с таблицей БД

2.3.1. Новое приложение

Разработанная нами программа позволяет лишь просматривать таблицу Biolife. Расширим ее функционал возможностями добавления новых записей, редактирования существующих и удаления ненужных. Кроме того заменим надписи на заголовках столбцов русскими названиями, а также добавим новые поля, где название фауны будет продублировано на русском языке. Для этого создадим новое приложение с одной формой и сохраним ее файл под именем MainForm. pas, а само приложение под именем Biolife2. dpr в папке Biolife2.

Чтобы не вносить изменения в базовую таблицу, рассмотрим аналогичную biolife.db таблицу biolifes.db, которая находится в папке BiolifesDb настоящего методического материала. Для этого внутри папки Biolife2 создадим папку db и скопируем в нее все файлы таблицы biolifes из папки BiolifesDb настоящего методического материала. В папке db эти файлы можно подвергнуть изменениям.

Прежде всего дадим нашей БД новое название (алиас, alias). Для этого откроем специальную программу SQL Explorer (BDE Administrator) командой Базы данных / Explore и создадим новую БД командой Object / New / STANDARD. Затем заменим название БД, которое предложено по умолчанию как STANDARD1 на DbBiolife2. Укажем путь к нашей БД, то есть к папке db, в позиции PATH. Эта ситуация показана ниже на рис. 3.1. Сохраним БД при помощи кнопки Apply (с изображением синей стрелки).

Рис. 3.1. Окно создания новой БД

Теперь добавим в таблицу новые поля. Для этого откроем специальную программу DatabaseDesktop командой Сервис / Database Desktop. Затем командой File / Open / Table (Файл / Открыть / Таблицу) откроем файл biolifes.db из нашей папки db (рис. 3.2).

Теперь выполним команду Table / Restructure (Таблица / Реструктурировать). После этого появится окно со списком полей таблицы, вид которого показан на рис. 3.3.

Рис. 3.3. Окно реструктуризации полей таблицы biolife. db

Как видно из этого рисунка характеристиками полей являются Field Name (имя поля), Type (тип), Size (размер) и Key (ключевое). В данном случае ключевым является поле Id (номер вида) поскольку в колонку ключа вставлена звездочка. Таблица содержит поля различного типа.

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

Тип Обозначение Описание
Alpha A Строка длины не более 255 символов
Number N Число с плавающей точкой
Money $ То же, но при выводе сопровождается обозначением денежного знака
Short S Малое целое
LongInteger I Большое целое
Date D Дата в диапазоне от 1 января 9999 г. до н.э. до 31 декабря 9999 г.
Time T Время
Timestamp @ Дата и время
Memo M Строка произвольной длины. Первые 240 символов хранятся в файле основной таблице, остальные – в файле с BLOB-данными
Formatted Memo F То же, что и Memo но для RTF-текста (размеченного аналогично Microsoft Word)
Graphic G Графическое изображение в формате BMP, PCX, TIFF, GIF или EPS. Хранится в файле с BLOB-данными
Logical L Логическое значение (TRUE или FALSE)
Autoincrement + Автоинкрементное поле. При добавлении новой записи значение этого поля автоматически увеличивается на 1

Под BLOB -данными (Binary Large OBject — двоичный большой объект) подразумевается большой массив двоичных данных. В СУБДBLOB - специальный тип данных, предназначенный для хранения изображений, аудио и видео, а также компилированного программного кода. В английском языке слово blob означает нечто большое и бесформенное. Название таким объектам дал сотрудник компании DEC Джим Старки (Jim Starkey).

Добавим в таблицу новое поле RusName и Weight - русское название и средний вес представителя фауны. Кроме того изменим тип ключевого поля, сделав его автоинкрементным. Это позволит нам не думать о том каким будет его значение для новых записей поскольку оно будет автоматически увеличиваться на единицу, обеспечив всем записях различные значения ключевого поля.

Рис. 3.4. Таблица biolife. db после добавления двух новых полей

Обратите внимание, что для поля Weight свойство Default value (значение по умолчанию) установлено в нуль. Это означает, что при создании новой записи в это поле будет записан нуль. Окно редактирования закрывается нажатием кнопки Save (Сохранить). Можно закрыть и саму программу Database Desktop.

Вернемся в Delphi и выполним команду Базы данных / Мастер форм. Установите опции так, как показано на рис. 3.5, нажмите кнопку Вперед. На втором шаге выберите файл БД, как показано на рис. 3.6 и снова нажмите кнопку Вперед.

Рис. 3.5. Утилита Мастер Формы Базы Данных Рис. 3.6. Второй шаг Мастера Формы Базы Данных

На третьем шаге выделите все поля таблицы и перенесите их список "Упорядоченные поля" кнопкой с двойной стрелкой."берите файл БД, как показано на рис. 3.6 и снова нажмите кнопку Вперед (рис. 3.7). На четвертом шаге выберите опцию выравнивания полей по вертикали (рис. 3.8)

Рис. 3.7. Третий шаг Мастера Формы Базы Данных Рис. 3.8. Четвертый шаг Мастера Формы Базы Данных

На пятом шаге выберите опцию размещения надписей над полями сверху (рис. 3.9). На шестом шаге выберите опцию Только форма (рис. 3.10).

Рис. 3.9. Пятый шаг Мастера Формы Базы Данных Рис. 3.10. Шестой шаг Мастера Формы Базы Данных

В результате будет создана новая форма, вид которой показан на рис. 3.11.

Рис. 3.11. Новая форма с полями таблицы базы данных

Вставьте на главную форму компонент Panel и дайте его свойству Align значение alTop (прижать к верху на всю ширину формы). Растяните его по вертикали, как показано на рис. 3.12. Под панель положите сетку DBGrid (закладка Data Controls) и дайте её свойству Align значение alClient (занять всю оставшуюся часть клиентской области родителя). Растяните форму по горизонтали, сделав её примерно равной ширине формы, показанной на рис. 3.13.

Перейдите на форму, где Мастер создал компоненты (рис. 3.11), щелкните на верхнем левом верхнем компоненте DBNavigator, выполните команду Правка / Вырезать, перейдите на главную форму, щелкните там на панели и перенесите его на эту панель командой Правка / Вставить.

Далее снова вернитесь на вторую форму, при нажатой клавише Ctrl выделите разом компоненты, что лежат ниже, и аналогичным образом перенесите их на панель главной формы. Перенесите туда также компоненты Table1 и DataSource1. Удалите вторую форму (у нее имя Unit2) из проекта командой Проект / Удалить из Проекта.

Переместите и растяните компоненты для полей MemoNodes и Graphic так, чтобы они приняли вид, показанный на рис. 3.13.

Кроме того положите на панель кнопку SpeedButton (закладка Additional) рядом с меткой Graphic. Она потребуется для редактирования значений поля Graphic (изменения рисунка, относящегося к определенной записи таблицы). Дайте кнопке имя sbOpenImage. Нанесите на нее рисунок, подобрав для свойства Glyph подходящую картинку, которая символизирует выбор файла. Такой рисунок можно найти в папке C:\Program Files\Common Files\Borland Shared\Images\Buttons.

Рис. 3.12. Главная форма с панелью и сеткой Рис. 3.13. Главная форма после переноса компонентов

Положите на форму компонент OpenPictureDialog (закладка Dialogs). Он потребуется для выбора файлов изображений фауны. Измените его свойство Filter так, как показано на рис. 3.14. Это будет означать, что выбирать можно будет только файлы с рисунки, которые имеют расширение. jpg и. jpeg.

Рис. 3.14. Фильтр файлов при выборе изображений фауны с помощью компонента OpenPictureDialog

Снова добавьте все поля в таблицу Table1, затем поля Id, Graphic и Notes сделайте невидимыми в сетке, установив значение их свойства Visible в false. Ключевое поле для нас не представляет интереса, равно как и BLOB -поля, которые в сетке не выводятся, тем самым бесполезно занимая площадь сетки.

Присвойте свойству DataSource компонентов БД, включая DBNavigator, значение DataSource1. Измените свойство Active таблицы Table1 на true (открыть таблицу). При этом окно формы примет вид, показанный на рис. 3.15.

Рис. 3.15. Главная форма после активации таблицы Table1

Видно, что в сетке появились новые поля RusName и Weight.

Перемещаться по записям таблицы удобно с помощью навигатора (на форме он расположен в верхней левой ее части). Чтобы были видны всплавающие подстказки о назначении его кнопок, нужно установить свойство ShowHint в true. Чтобы подсказки стали русскоязычными достаточно в списоке Hints заменить англоязычные подсказки русскоязычными в соответствии с нижеследующими данными (3.16).

Кнопки навигатора
Button Hints Подсказки для кнопок
First record Prior record Next record Last record Insert record Delete record Edit record Post edit Cancel edit Refresh data Первая запись Предыдущая запись Следующая запись Последняя запись Вставить запись Удалить запись Изменить запись Сохранить изменения Отмена редактирования Обновить данные
Рис. 3.16. Всплывающие подсказки для кнопок навигатора

Запустите созданную программу клавишей F9 или кнопкой Run. Активированное окно формы примет вид, который показан на рис. 3.17.

Рис. 3.17. Окно активной программы

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


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: