- •Раздел 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.
- •Агрегирование и группирование записей.
- •Объединение таблиц.
- •Вложенные запросы.
- •Модификация записей.
- •Примеры баз данных
Тема. Отображение и выбор значения поля.
При выполнении приложения определить вид полей набора данных можно с помощью свойства DefaultFields:Boolean. Если это свойство имеет значение True, то набор данных имеет поля по умолчанию, то есть динамические, в противном случае – статические поля.
Через объект типа TField можно:
- обратиться к полю и его значению;
- проверить тип и значение поля;
- отформатировать значение поля, которое отображается или редактируется в визуальных компонентах.
Динамические и статические поля имеют одинаковые свойства, события и методы.
Для динамического поля имя объекта Field совпадает с именем соответствующего физического поля таблицы.
Имя статического поля является составным и образуется путем слияния имен набора данных и именем физического поля таблицы БД. Например, если набор данных Table1, определен статический объект для поля Fam, то объект получит имя Table1Fam.
К полю можно обратиться одним из трех способов:
с использованием метода FieldByName:
TbTovar.FieldByName(‘T_Nazv’).AsString:=’Тетрадь’;
через свойство Fields:
TbTovar.Fields[0].AsString:=’Тетрадь’;
путем прямого обращения:
TbTovarT_Tovar.AsString:=’Тетрадь’;
Пример доступа к значению поля:
procedure TForm1.Button3Click(Sender: TObject);
var s:String;
a:real;
begin
// доступ к полю по его имени в наборе данных
s:=TbTovar.fieldbyname('T_Cena').AsString;
a:=TbTovar.fieldbyname('T_Cena').AsFloat;
Label3.Caption:=s;
Label4.Caption:=FloatToStr(a);
// доступ к полю как к отдельному компоненту
s:=TbTovarT_Cena.AsString;
a:=TbTovarT_Cena.AsFloat;
Label3.Caption:=s;
Label4.Caption:=FloatToStr(a);
end;
Редактирование полей выполняется в Редакторе полей. Каждое поле – это объект, класс которого зависит от типа поля. Например,
TbTovarT_Nazv:TStringField;
TbPokupkaSumma:TCurrencyField;
Основные свойства объекта поля Field.
FieldName: String – имя поля.
Например, TbTovarT_Prim.FieldName:='Prim';
DisplayWidth:Integer – ширина колонки (число символов);
DisplayLabel: String – текст заголовка столбца, отображаемый в DBGrid.
Например,
TbTovarT_Nazv.DisplayLabel:='Наименование товара';
DisplayFormat:String – служит для форматирования значения поля по заданной маске. Маска состоит из трех секций, разделенных (;) (точка с запятой). В маске можно использовать следующие символы:
0 – цифра числа, незначащие нули отображаются,
# - цифра числа, незначащие нули отбрасываются,
. (точка) – разделитель целой и дробной части числа,
, (запятая) – разделитель тысяч,
E+ e+ - разделитель мантиссы и порядка,
“xx” и ‘xx’ – символы, выводимые без изменений,
; - разделитель.
Например,
000E+00 для чисел с плавающей точкой
###0.0 для чисел с фиксированной точкой
###0.00’ р.’ для денежных сумм
##0;-##0;0 отдельно для положительных, отрицательных и нулевых значений.
DataSet:TDataSet – указывает набор данных, связанный с полем.
Например,
if TbTovarT_Nazv.DataSet=TbTovar then ShowMessage('НД - таблица Товар');
FieldNo:Integer – содержит порядковый номер поля в наборе данных (1, 2,..)
Например,
ShowMessage(IntToStr(TbTovarT_Nazv.FieldNo));
Index:Integer – индекс поля, который определяет порядок отображения полей в DBGrid, (начиная с 0).
Например,
ShowMessage(IntToStr(TbTovarT_Nazv.Index));
CanModify:Boolean – только для чтения, разрешено ли изменять значение поля; если равно True, то разрешено.
AsBoolean: Boolean, AsCurrency:Currency, AsDateTime:TDateTime, AsFloat: Double, AsInteger: Integer, AsString:String, AsVariant: Variant – изменяют тип значения поля на указанный (логический, денежный, дата-время, двойной точности, целочисленный, строковый, вариантный.)
IsNull:Boolean – равно True, если поле не содержит значение,
Required:Boolean – если True, то значение каждой записи поля не может быть пустым, в противном случае генерируется исключительная ситуация.
FieldKind:TFieldKind – определяет тип поля и принимает одно из следующих значений:
fkData – обычное поле,
fkCalculated – вычисляемое поле,
fkLookup – подстановочное поле, имеющее связанный с ним список значений,
fkInternalCalc – внешнее вычисляемое поле,
fkAggregate – агрегатное поле.
Value:Variant – определяет текущее значение поля (обращение напрямую),
Например,
ShowMessage(IntToStr(TbTovarT_Kol_vo.Value));
ReadOnly:Boolean – если True, то запрещено вводить в данное поле значение.
Например, TbTovarT_Cena.ReadOnly:=True;
Методы
Procedure Clear; - значение поля текущей записи будет сделано пустым.
Например,
TbTovar.Edit;
TbTovarT_Nazv.Clear;
TbTovar.Post;
Function FocusControl; - фокус ввода будет перемещен на текущей форме к элементу (текущей записи), который отображает значение данного поля.
Например, TbPokupkaP_Kol_vo.FocusControl;
События
OnValidate – возникает при изменении поля вручную или программно до выполнения метода Post, который запоминает изменения в БД и записывает их на диск. Обработчик этого события можно использовать для проверки правильности введенного пользователем значения.
Например, пусть в поле T_Cena БД Tovar нельзя ввести знак “-” (минус). Тогда
procedure TForm1.TbTovarT_CenaValidate(Sender: TField);
begin
if pos('-',TbTovarT_Cena.AsString)>0 then begin
ShowMessage('Введен недопустимый символ!');
Abort;
end;
end;
OnChange – возникает при изменении значения в поле данных.
Например,
procedure TForm1.TbTovarT_CenaChange(Sender: TField);
begin
if MessageDlg('Значение было изменено!'+#10+'Отменить изменение?',
mtConfirmation, [mbYes, mbNo], 0) = mrYes then TbTovar.Cancel;
end;