- •Раздел 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.
- •Агрегирование и группирование записей.
- •Объединение таблиц.
- •Вложенные запросы.
- •Модификация записей.
- •Примеры баз данных
Тема. Визуальные компоненты отображения записей из набора данных.
Компонент DBGrid (вкладка DataControl) позволяет выводить записи из набора данных. При этом сетка DBGrid отображает все записи набора данных. С помощью сетки можно управлять набором данных, поля которого отображаются. Для навигации по записям и их просмотра используются полосы прокрутки и клавиши перемещения курсора. <Insert> - вставка новой записи. <Ctrl>+<Del> - удаление записи.
Свойства
Columns:TDBGridColumns – массив объектов Column:TColumn, которые описывают отдельные столбцы сетки. По умолчанию отображаются все столбцы. С помощью редактора формируется определенный набор. Например,
// вывод количества колонок в DBGrid-е
ShowMessage(inttostr(DBGPokupka.Columns.Count));
FieldCount:Integer – содержит число видимых столбцов сетки. Нумерация от 0.
Fields[Index:Integer]:TField – доступ к отдельному столбцу с указанным номером. Индекс определяет номер столбца от 0 до FieldCount-1. Например,
ShowMessage(DBGPokupka.Fields[5].AsString);
SelectedField:TField – указывает на объект типа TFiled текущего столбца сетки. Например, ShowMessage(DBGPokupka.SelectedField.AsString);
SelectedIndex:Integer – номер текущего столбца в массиве Colunms (нумерация с 0).
Например,
DBGPokupka.SelectedIndex:=4; ShowMessage(DBGPokupka.Columns.Items[DBGPokupka.SelectedIndex].Field.AsString);
Title:TColumnTitle – объект заголовка столбца, который имеет свойства Caption, Alignment, Color, Font. Например,
DBGTovar.Columns[2].Title.Caption:='Цена'; DBGTovar.Columns[2].Title.Alignment:=taCenter; DBGTovar.TitleFont.Style:=[fsBold]; DBGTovar.TitleFont.Color:=clMaroon;
Color:TColor, FixedColor:TColor – задают цвета сетки и ее фиксированных элементов.
Например,
DBGTovar.Color:=clOlive;
DBGTovar.FixedColor:=$00ff00cc;
Options:TGridOptions – доступ к параметрам сетки: dgEditing – разрешено редактирование, dgTitles – отображаются заголовки столбцов, dgConfirmDelete – при удалении строки выдается запрос на подтверждение. Например,
// разрешить редактирование и перемещение с помощью <Tab>
DBGTovar.Options:=DBGTovar.Options+[dgEditing,dgTabs];
События
OnCellClick – генерируется при щелчке на ячейке с данными. Например,
// вывод в Label содержимого текущей ячейки
procedure TForm1.DBGTovarCellClick(Column: TColumn);
begin
Label1.Caption:=Column.Field.AsString;
end;
OnTitleClick – генерируется при щелчке на заголовке столбца. Например,
procedure TForm1.DBGTovarTitleClick(Column: TColumn);
begin
Label1.Caption:=Column.Title.Caption; // название столбца
Label2.Caption:=Column.FieldName; //имя поля
end;
OnColEnter – возникает при получении фокуса столбцом сетки.
OnColExit – при потере фокуса столбцом сетки.
Свойства объекта TColumn - столбец
PickList:TStrings – список для выбора значений, заносимых в поле. Текущая ячейка вместе со списком образует своего рода компонент ComboBox или DBComboBox.
ButtonStyle задает режим работы со списком PickList:
cbsAuto – стрелка с выпадающим списком,
cbsEllipsis - многоточие без выпадающего списка,
cbsNone – нет списка.
Пример. Формирование списка PickList поля T_Prim (A,20) таблицы Tovar.
procedure TForm1.FormCreate(Sender: TObject);
begin
DBGrid1.Columns[4].PickList.Clear;
DBGrid1.Columns[4].Title.Caption:='Примечание;
DBGrid1.Columns[4].PickList.Add('Товар на складе);
DBGrid1.Columns[4].PickList.Add('Товар в зале’);
DBGrid1.Columns[4].PickList.Add('Нет в наличии’);
end;
Пример. Вычисление общей суммы всех товаров в таблице Tovar БД Tovar.
procedure TForm1.BtTotalSumClick(Sender: TObject);
var s: real; i: integer;
begin
s:=0; TbTovar.First;
while not TbTovar.eof do begin
s:=s+TbTovar.fieldbyname('Summa').AsFloat;
TbTovar.Next;
end;
Label1.Caption:=Floattostr(s);
end;
Компонент TDBText – позволяет отображать текстовое представление различных полей набора данных, также как они отображаются в TDBGrid. Подобен TLabel, но текст формируется автоматически.
Свойства:
DataSource:TDataSource; - указывает используемый источник данных.
DataField: TDataField; - задает поле набора данных.
Например, В компоненте DBText1 отображается значение поля P_Kol_vo для текущей записи:
procedure TForm1.FormCreate(Sender: TObject);
begin
TbTovar.Active:=True;
TbPokupka.Active:=True;
DBText1.DataSource:=dsPokupka;
DBText1.DataField:='P_Kol_vo';
end;
Компонент TDBEdit – однострочное поле редактирования для отображения и изменения значения поля набора данных. Введенное в поле редактирования значение будет сохранено в таблице базы данных только после применения метода Post.
Свойства:
DataSource:TDataSource; - указывает используемый источник данных.
DataField: TDataField; - задает поле набора данных.
Text: String; - содержит значение поля текущей записи.
Например,
ShowMessage(DBEdit1.Text);
В компоненте DBEdit1 отображается значение поля T_Nazv для текущей записи:
procedure TForm1.FormCreate(Sender: TObject);
begin
TbTovar.Active:=True;
TbPokupka.Active:=True;
DBEdit1.DataSource:=dsTovar;
DBEdit1.DataField:='T_Nazv';
end;
Сохранение в базе данных значения, введенного в поле DBEdit1, выполняется только после подтверждения пользователем:
procedure TForm1.DBEdit1Exit(Sender: TObject);
begin
if MessageDlg('Сохранить изменение?', mtConfirmation, [mbYes,mbNo],0) = mrYes
then TbTovar.Post
else TbTovar.Cancel;
end;
Компонент TDBMemo –многострочное поле редактирования.
Свойства:
DataSource:TDataSource; - указывает используемый источник данных.
DataField: TDataField; - задает поле набора данных.
Text: String; - содержит значение поля текущей записи.
Компонент TDBImage – реализует объект рисунок, в котором можно отображать и изменять значение поля набора данных формата BLOB.
Свойства:
DataSource:TDataSource; - указывает используемый источник данных.
DataField: TDataField; - задает поле набора данных.
Picture:TPicture; - определяет изображение. Значение этого свойства можно изменить программно.
Например,
DBImage1.Picture.Assign(Image1.Picture);
Загрузка в компонент DBImage1 объекта-рисунок из файла, выбранного в стандартном диалоговом окне:
procedure TForm1.Button1Click(Sender: TObject);
begin
if OpenPictureDialog1.Execute then
DBImage1.Picture.LoadFromFile(OpenPictureDialog1.FileName);
end;