
- •Раздел 1. Проектирование баз данных. 2
- •Раздел 2. Разработка приложений для работы с Базами Данных в среде Delphi. 25
- •Раздел 1. Проектирование баз данных.
- •1.1. Основы построения баз данных. Модели данных.
- •1.1.1. Реляционная модель данных.
- •1.1.2. Нормализация базы данных.
- •1.2. Проектирование базы данных методом “сущность-связь”.
- •Раздел 2. Разработка приложений для работы с Базами Данных в среде Delphi.
- •2.1. Технология создания информационной системы.
- •2.1.1.Создание таблиц базы данных в Database Desktop.
- •2.1.2. Целостность базы данных.
- •Программа bde Administrator и модули данных.
- •Компоненты доступа и работы с данными. Тема: Наборы данных. Состояние и режимы наборов данных.
- •Тема: Объекты поля. Операции с полями.
- •Тема. Отображение и выбор значения поля.
- •Тема. Визуальные компоненты отображения записей из набора данных.
- •Закладки.
- •Тема. Ограничения на вводимые значения.
- •Тема. Сортировка набора данных.
- •Тема. Операции с таблицей базы данных.
- •Тема. Фильтрация записей.
- •Тема. Поиск записей.
- •Тема. Модификация набора данных.
- •Тема. Работа с отчетами
- •Отчет для связанных наборов данных
- •Составной отчет
- •Модули данных
- •Конструктор отчетов Rave Report
- •Реляционный способ доступа к данным.
- •Основные сведения о языке sql.
- •Оператор выбора Select.
- •Агрегирование и группирование записей.
- •Объединение таблиц.
- •Вложенные запросы.
- •Модификация записей.
- •Примеры баз данных
Тема: Объекты поля. Операции с полями.
Объект поля Field:TField служит полем набора данных. Тип TField – абстрактный класс и непосредственно не используется. Вместо него применяются производные классы, которые соответствуют типу данных. Типы объектов TField приведены в следующей таблице.
-
Тип объекта
Вид поля
TBLOBField
BLOB – поле
TMemoField
Memo – поле
TGraphicfield
Графическое поле
TBooleanField
Логическое поле
TBinaryField
Двоичное поле
TByteField
Поле байтов фиксированной длины
TVarBytesField
Поле байтов для значений переменной длины
TDateFiled
Поле даты
TFloatField
Поле вещественных значений
TIntegerField
Поле целочисленных значений (32 разряда)
TStringField
Поле строкового значения
Объекты типа TField являются невизуальными и служат для доступа к данным. Существуют два способа задания состава полей набора данных:
по умолчанию (динамические поля),
с помощью редактора полей (статические поля).
При каждом открытии набора данных, и при проектировании, и при выполнении приложения, для каждого поля набора автоматически создается свой объект типа TField (динамические поля).
Статические (устойчивые) поля создаются на этапе разработки приложения. Эти поля позволяют: определять вычисляемые поля, ограничивать состав полей, изменять порядок полей набора данных. Если хотя бы одно из полей набора данных является статическим, то динамические поля больше создаваться не будут.
Создание статических полей выполняется с помощью Редактора полей, который вызывается одним из следующих действий:
дважды щелкнуть на компоненте Table,
из контекстного меню компонента Table выбрать Fields Editor…
С помощью редактора полей можно создать новое статическое поле, удалить статическое поле, изменить порядок следования статических полей.
Создание статического поля.
В контекстном меню Редактора полей выбрать пункт Add Fields (добавить поля) (<Ctrl>+<A>) или Add All Fields (добавить все поля) (<Ctrl>+<F>). Добавленное статическое поле (или поля) является полем данных и связано с конкретным физическим полем таблицы БД.
Удаление статического поля.
Выделить поле в списке Редактора полей и нажать <Delete> или выбрать в контекстном меню пункт Delete.
Изменение порядка следования полей выполняется с помощью мыши или клавишами <Ctrl>+, <Ctrl>+.
Существует три типа статических полей:
поле данных, связанное с соответствующим физическим полем таблицы;
вычисляемое поле, значение которого рассчитывается в обработчике события OnCalcFields во время выполнения приложения;
поле выбора, значение которого можно выбирать из списка, формируемого на основе заданных критериев и правил.
Создание нового поля:
в контекстном меню Редактора полей выбрать пункт New Field…(Новое поле) (<Ctrl>+<N>).
В появившемся окне New Field задать:
Field Properties (Свойства поля):
Name (Имя) – значение свойства Field Name,то есть имя поля,
Component – значение свойства Name, то есть название компонента (Объекта типа TField)
Type – тип поля,
Size – размер поля.
Field Type (Тип нового поля) выбирается из группы переключателей
Data – поле данных,
Calculated – вычисляемое поле,
Lookup – поле выбора.
Lookup definition (определение выбора) – указываются набор данных и поля связи, поля для формирования списка выбора и результата.
Создание поля данных выполняется по описанным выше шагам.
Создание вычисляемого поля.
В окне New Field задать имя и тип поля;
Установить переключатель Calculated;
Для набора данных, который содержит это поле подготовить код обработчика события OnCalcFields. В коде этому полю присвоить требуемое значение. Для расчета значения можно использовать значения других полей, переменные и константы программы.
Поле выбора позволяет выбирать одно значение из предлагаемого списка и автоматически заносить информацию в заданное поле изменяемой записи. С полем выбора связывается список, заполняемый значениями указанного поля из второго набора данных. Оба набора данных связываются с помощью соответствующих полей.
Создание поля выбора.
В окне New Field задать имя и тип поля создаваемого поля выбора;
Установить переключатель Lookup и задать: имя поля связи текущего набора данных, имя набора данных выбора, поле связи набора данных выбора, поле выбора.
П
ример
1. Для БД Tovary создать
вычисляемое поле Summa, для
определения общей стоимости товара.
Создать псевдоним Tovary.
Создать приложение, разместив на нем следующие компоненты:
Компонент |
Свойства |
Table1 |
Databasename = Tovary; TableName =Tovary.db; Name=TbTovary; |
DataSource1 |
Dataset= TbTovary; Name=dsTovary; |
DBGrid1 |
DataSource=dsTovary; |
DBNavigator1 |
DataSource=dsTovary; |
Для компонента TbTovary:
Создать все статические поля (T_Code, T_Nazv, T_Cena, T_Kol_vo);
Вызвать окно New Field и задать
В обработчике события OnCalcFields компонента TbTovary записать код вычисления стоимости товара:
procedure TForm1.TbTovaryCalcFields(DataSet: TDataSet);
begin
TbTovarySumma.AsCurrency:=
TbTovaryT_Cena.AsCurrency*TbTovaryT_Kol_vo.AsInteger;
end;
П
ример
2. Для базы данных “Pokupka”,
состоящей из двух таблиц создать поле
подстановки в наборе данных таблицы
Pokupka для названия товара
из набора данных таблицы Tovar.
|
|
Создать псевдоним Pokupka.
Создать приложение, разместив на нем следующие компоненты:
Компонент |
Свойства |
Table1 |
Databasename = Pokupka; TableName =Pokupka.db; Active = True; Name=TbPokupka; |
DataSource1 |
Dataset= TbPokupka; Name=dsPokupka; |
DBGrid1 |
DataSource=dsPokupka; |
DBNavigator1 |
DataSource=dsPokupka; |
Table2 |
Databasename = Pokupka; TableName =Tovar.db; Active = True; Name=TbTovar; |
DataSource2 |
Dataset= TbTovar; Name=dsTovar; |
DBGrid2 |
DataSource=dsTovar; |
DBNavigator2 |
DataSource=dsTovar; |
Создать поле подстановки для названия товара:
Для компонента TbPokupka:
Создать все статические поля (P_Code, P_Date, P_Tovar, P_Kol_vo);
Вызвать окно New Field и задать
Пример 3. Для базы данных “Pokupka”, состоящей из двух таблиц создать вычисляемое поле Summa в наборе данных таблицы Pokupka, для подсчета стоимости купленного товара.
Выполнить пункты 1)-2) из предыдущего примера.
Для компонента TbTovar создать все статические поля (T_Code, T_Nazv, T_Cena);
Для компонента TbPokupka:
– создание поля связи - Вызвать окно New Field и задать
Создать вычисляемое поле Summa, для этого вызвать окно New Field и задать
В обработчике события OnCalcFields компонента TbPokupka записать код вычисления стоимости товара:
procedure TForm1.TbPokupkaCalcFields(DataSet: TDataSet);
begin
TbPokupkaSumma.AsCurrency:=
TbPokupkaCena.AsCurrency*TbPokupkaP_Kol_vo.AsInteger;
end;