
- •Практический раздел содержание
- •Лабораторная работа №1
- •Основные понятия диаграмм классов uml
- •Классы, атрибуты, операции
- •Категории связей. Связь-зависимость
- •Связи-обобщения и механизм наследования классов в uml
- •Связи-ассоциации: роли, кратность, агрегация
- •Получение схемы реляционной базы данных из диаграммы классов uml
- •Лабораторная работа №2
- •Лабораторная работа №3
- •Лабораторная работа №4
- •Лабораторная работа №5
- •Лабораторная работа №6
- •3Апрос 6-2-1
- •3Апрос 6-2-2
- •Лабораторная работа №7
- •Лабораторная работа №8
- •Создание макроса
- •Сведения о построителе макросов
- •Создание изолированного макроса
- •Создание группы макросов
- •Создание внедренного макроса
- •Изменение макроса
- •Использование условий для контроля за действиями макроса
- •Примеры условных выражений в макросах
- •Лабораторная работа №9
- •Описание
- •Порядок обработки элементов оператора select:
- •Конструкция where
- •Конструкция group by
- •Конструкция having
- •Конструкция order by
- •Seller (Продавцы)
- •Sale (Продажи)
- •Supplier (Поставщики)
- •Goods (Товары)
- •Model (Модели)
- •Custom (Заказ)
- •Простые запросы
- •Агрегатные функции
- •Лабораторная работа №10
- •Многотабличные запросы
- •Примеры многотабличных запросов
- •Подзапросы и многотабличные запросы
- •Лабораторная работа №11
- •Операторы манипулирования данными
- •Лабораторная работа №12
- •Лабораторная работа №13
- •Примеры
- •Синтаксис
- •Примеры
- •Лабораторная работа №14
- •Лабораторная работа №15
- •Лабораторная работа №16
- •Лабораторная работа №17
- •Лабораторная работа №18
- •Лабораторная работа №19
- •Работа с данными
- •Состояния и режимы набора данных
- •Поля и класс tField
- •Типы полей и типы данных
- •Сортировка
- •Навигация
- •Фильтрация
- •Редактирование
- •Добавление и удаление
- •Лабораторная работа №20
- •Лабораторная работа №21
- •Лабораторная работа №22
- •Лабораторная работа №23
- •Компонент dbCtrlGrid
- •Лабораторная работа №24
- •Импорт информации из Delphi в Word
- •1. Как определить установлен ли Excel
- •2. Как определить запущен ли Excel
- •3. Как вывести данные в Excel
- •Лабораторная работа №25
- •Поиск и фильтрация данных в Delphi
- •Общие положения
- •Поиск данных
- •Лабораторная работа №26
- •Лабораторная работа №27
- •Отчеты в Delphi
- •Лабораторная работа №28
- •Лабораторная работа №29
- •Лабораторная работа №30
- •Лабораторная работа №31
- •Лабораторная работа №32
- •Стандартные функции php для работы с MySql
- •Пример простейшей поисковой системы на php
- •Сортировка таблиц
- •Лабораторная работа №33
- •Работа с соединениями
- •Постоянные соединения с базами данных
- •Лабораторная работа №34
- •Создание бд и таблиц
- •Создание бд и таблиц с помощью php
- •Создание бд и таблиц с использованием phpMyAdmin
- •Лабораторная работа №35
- •Лабораторная работа №36
- •Применение информации о структуре таблицы
- •Лабораторная работа №37
- •Лабораторная работа №39
- •Роль сервера приложений: Настройка сервера приложений
- •Предварительная подготовка
- •Настройка сервера приложений
- •Параметры сервера приложений
- •Сводка выбранных параметров
- •Завершение работы мастера настройки сервера
- •Удаление роли сервера приложений
- •Дальнейшие действия: выполнение дополнительных задач
- •Подготовка данных для сервера приложений
- •Создание сервера приложений
- •Лабораторная работа №40
- •Создание локального клиентского приложения (на том же пк, что и сервер)
- •Удаленный клиент с использованием olEnterprise
- •Об удаленном клиенте с использованием dcom
- •Удаленный клиент с использованием ActiveForm
Лабораторная работа №20
Тема: Использование компонента Table
Цель работы: Изучить использование компонента Table для подключения таблицы базы данных при разработке приложений в Delphi.
Время работы: 2 учебных часа.
Правила по ТБ: Общие.
Оборудование рабочего места: Практикум, ПК.
Программное обеспечение: Windows, MS Office, Delphi
Вопросы входного контроля:
Дайте определение понятию БД.
Расскажите, что вы знаете о компоненте Table, и для чего он используется.
Расскажите, какие невизуальные компоненты доступа к БД вы знаете.
Расскажите, какие визуальные компоненты доступа к БД вы знаете.
КРАТКИЕ ТЕОРЕТИЧЕСКИЕ СВЕДЕНИЯ
Компоненты Delphi, обеспечивающие доступ к БД
Имеются несколько основных компонентов (объектов), которые используют постоянно для доступа к БД. Эти объекты могут быть разделены на три группы:
1.Невизуальные: Table, Query, TDataSet, TField
2.Визуальные: DBGrid, DBNavigator, DBEdit, DBMemo.
3. Связующие: TDataSource
Первая группа включает невизуальные классы, которые используются для управления таблицами и запросами. Эта группа сосредотачивается вокруг компонент типа Table, Query, и классами TDataSet и TField. В Палитре компонент они расположены на странице Data Access и BDE.
Вторая группа классов - визуальные, которые показывают данные пользователю, и позволяют ему просматривать и модифицировать их. Эта группа классов включает компоненты типа DBGrid, DBNavigator, DBEdit, DBMemo, DBImage и DBComboBox. В Палитре Компонентов они расположены на странице Data Controls.
Имеется и третий тип классов, который используется для того, чтобы связать предыдущие два типа объектов. К 3 типу относится только невизуальный компонент DataSource.
При организации работы с БД следует иметь в виду определенный порядок связи между этими компонентами и БД:
БД <-> BDE <-> Невизуальный компонент <-> Связующий компонент <-> Визуальный компонент
Рисунок 20.1 – Использование компонента Table
При использовании Table для доступа к таблице:
Необходимо поместить на форму объект Table (страница BDE палитры компонент) и указать, с какой таблицей нужно работать. Для этого нужно заполнить в Инспекторе объектов свойства DatabaseName (алиас или строка, содержащая путь к каталогу БД) и TableName (имя файла БД).
В DatabaseName можно либо указать каталог, в котором находятся БД (например, ‘C:\DELPHI\DEMOS\DATA’), либо выбрать из списка псевдонимов (алиасов) БД.
Свойство Active объект Table установить в True. Table1.Active := True; или выполнить метод Open.
При запуске БД будет открываться автоматически.
Нет различия между результатом вызова метода и установки свойства. Метод Open, однако, сам заканчивается установкой свойства Active в True, так что лучше использовать свойство Active. Также, есть два способа закрыть БД.
Первый способ просто вызывать Close:
Table1.Close;
Или можно использовать свойство active:
Table1.Active := False;
Основное отличие между этими командами только то, что Open и Close это методы (процедуры), а Active - свойство.
Рисунок 20.2 – Использование компонента Datasource
Компонент DataSource расположен на странице Data Access палитры компонент. Компонент DataSource используется в качестве соединителя между компонентами связанными с БД или запросом (Table или Query) и компонентами, визуализирующими данные, типа TDBGrid, TDBEdit и TDBComboBox. При этом в компоненте DataSource необходимо указать в свойстве DataSet соответствующий TTable или TQuery. Затем в компонентах визуализации в свойстве DataSource указывается имя компонента DataSource.
DataSource имеет свойство Enabled, и оно может использовано для временного разрыва связи копонентов визуализации от БД или запроса. Эти нужно, например, для программного сканирования всех записей в БД. Тогда, если таблица связана с визуальными компонентами, то каждый раз, когда вызывается метод TTable.Next, визуальные компоненты будут перерисовываться. Сканирование тысяч записей займет много меньше времени, чем время для перерисовки визуальных компонент.
В таких случаях нужно установить поле DataSource.Enabled:=False. Это позволит сканировать записи без перерисовки визуальных компонент. Это операция может увеличить скорость в некоторых случаях на несколько тысяч процентов. Логическое свойство TDataSource.AutoEdit указывает, переходит ли БД автоматически в режим редактирования при вводе текста в компоненте визуализации.
Использование визуальных компонентов
Как правило просмотр и редактирование таблиц БД производят в одном из двух вариантов:
1. Режим таблицы (используется комбинация компонентов DBGrid, DBNavigator)
2. Режим формы (используется комбинация визуальных компонентов DBEdit, DBText, DBMemo, DBImage, DBListBox, DBComboBox, DBRadioGroup …)
Располагаются визуальные компоненты на странице Data Controls.
Рисунок 20.3 – Использование компонента DBGrid
Компонент DBGrid обеспечивает представление базы данных в виде таблицы. Свойства компонента DBGrid определяют вид таблицы и действия, которые могут быть выполнены над данными во время работы программы. Для того чтобы задать, какая информация будет отображена в таблице во время работы программы, нужно сначала определить источник данных для таблицы (установить значение свойства DataSource), затем — установить значения уточняющих параметров свойства Columns.
Фильтрация записей
Для использования выборки-фильтрации доступа к данным можно использовать простой фильтр или фильтр-диапазон.
Процедура ApplyRange позволяет установить фильтр-диапазон, который ограничивает диапазон просматриваемых записей. Например, в БД, поле CN имеет диапазон от 1000 до 10000. Если нужно чтобы были видны только те записи, которые имеют номер заказчика между 2000 и 3000, то используется метод ApplyRange, и еще два связанных с ним метода. Данные методы работают только с индексированным полем.
Вот процедуры, которые Вы будете чаще всего использовать при установке фильтров:
procedure SetRangeStart; procedure SetRangeEnd; procedure ApplyRange; procedure CancelRange;
Кроме того, у Table есть дополнительные методы для управления фильтрами:
procedure EditRangeStart; procedure EditRangeEnd; procedure SetRange;
Для использования этих процедур необходимо:
Сначала вызвать SetRangeStart и использовать свойство Fields для определения начала диапазона.
Затем вызвать SetRangeEnd и вновь использовать свойство Fields для определения конца диапазона.
Первые два шага подготавливают фильтр, и теперь необходимо вызвать ApplyRange, и новый фильтр вступит в силу.
Когда нужно прекратить действие фильтра - вызвать CancelRange.
Пример
with Table1 do
begin
EditRangeStart; {начало значение диапазона}
FieldByName('Matem').AsString := Edit1.Text;
EditRangeEnd; {конечное значение диапазона}
FieldByName('Matem').AsString := Edit2.Text;
ApplyRange; {применить диапазон}
end;
Создание фильтров
Простой фильтр использует 2 свойства Filter и Filtered. Перед установкой фильтра необходимо вызвать установить для TABLE свойстваActive:=FALSE, т.е. отключить БД. Далее в свойство Filter вносится текстовая строка условия фильтрации например 'CN>3'. Далее необходимо установить для логического свойства Filtered:=true и активизировать БД.
Пример:
TABLE1.Active:=FALSE;
table1.Filter:='matem<>3';
table1.Filtered:=true;
table1.Active:=true;
Здесь устанавливается фильтр для записей, где поле matem не равно 3.
Замечание. Если необходимо использовать в условии фильтрации строку, то необходима функция QuotedStr(строка) которая позволяет включить такую строку в строку фильтра:
Пример: Table1.Filter := 'Fio = ' + QuotedStr('M*'); - установка фильтра на фамилии, которые начинаются на М. Здесь так же можно использовать символ маски * для обозначения – любой.
Сортировка записей
Сортировка записей производится путем подключения индекса, т.е. индексирования. Фактически индекс – массив, содержащий нумерацию записей для отсортированного вида. Т.е. если записать абсолютные номера записей в том порядке, как они расположены в отсортированном списке записей, то это и будет индекс. Имея такой массив легко выводить записи в отсортированном порядке – выбирай запись с номером из индекса и добавляй ее на экран. Поскольку БД – файлы прямого доступа, то хранить отсортированный вид файла БД нет необходимости. Хранится только массив индекса. Это вариант логической сортировки. Физическая сортировка предполагает реальное переписывание файла БД. Очевидно, что логическая сортировка удобнее. Кроме того, можно иметь для 1 БД много индексов и подключать их по необходимости, что значительно сократит время на сортировку.
Как правило, индексы создаются при создании БД (Database Desktop), но можно из создавать и программным путем. Для подключения индекса достаточно записать в свойстве IndexName класса table строку с именем индекса. Пример: table1.IndexName:='Fio1'.
СОДЕРЖАНИЕ И ПОРЯДОК ВЫПОЛНЕНИЯ РАБОТЫ
Изучить теоретические сведения.
Создть новый проект.
Поместить на форму основные компоненты подключения БД – Table, DataSource, DBGrid, DBNavigator. Добавляем кнопку Button – «Подключить».
Проверить вариант прямого подключения, для этого сделаем следующие установки
Компонент Table – для свойства Databasename выбираем БД, для свойства Tablename выбираем имя таблицы.
Связываем компонент DataSource с Table (свойство DataSet).
Связываем компоненты DBGrid, DBNavigator с DataSource (свойство DataSource).
Проверить работоспособность подключения. Для этого в режиме конструирования установить свойство (компонента Table) Active=True. При этом, в окне компонента DBGrid должно появиться изображение таблицы БД.
Повторить подключение с помощью программы. Для этого создаем обработчик события – щелчка по кнопке «Подключить»:
table1.Active:=true;
Проверить работу проекта и внести в БД 5-6 записей о фамилиях, адресах и оценках учеников. Проверить работу кнопок компонента DBNavigator.
Создадим программным образом фильтрацию данных. Для примера выберем вариант записей с оценками по математике 4 и 5. Поместим на форму кнопку «Выделить оценки». Для кнопки создадим обработчик события щелчка мыши:
TABLE1.Active:=FALSE;
table1.Filter:='matem>3';
table1.Filtered:=true;
table1.Active:=true;
Проверить работу проекта.
Произведем вычисления среднего балла по математике. Для этого поместим на форму кнопку «Вычислить» и компонент Edit1 для вывода результата. Для кнопки создадим обработчик события щелчка мыши:
procedure TForm1.Button6Click(Sender: TObject);
var n,k:integer; s:real;
begin
if not(table1.Active) then table1.Active:=true;
n:=table1.RecordCount;
table1.First;
s:=0;
for k:=1 to n do
begin
s:=s+table1.Fields[2].AsInteger;
table1.Next;
end;
s:=s/n;
edit1.Text:=floattostr(s);
end;
Здесь используется сканирование по базе данных с вычислением суммы. Поле оценок по математике имеет номер 2, так как нумерация полей начинается с нуля.
Проверить работу всего проекта.
Продемонстрировать преподавателю работу разработанного образца проекта.
Получить от преподавателя индивидуальное задание и создать проект (по аналогии) для выполнения индивидуального задания.
Подготовиться к защите лабораторной работы, которая включает в себя демонстрацию индивидуального варианта, защиту по контрольным вопросам теоретической части работы.
Вопросы выходного контроля:
Расскажите о работе с компонентов Table, при подключении БД.
Перечислите визуальные компоненты доступа к базам данных, которые вы использовали.
Перечислите невизуальные компоненты доступа к базам данных, которые вы использовали.
Расскажите о методе AsInteger и какие варианты аналогичных методов есть у класса Table.
Расскажите о методе Next First и какие варианты аналогичных методов есть у класса Table.
Опишите, как определить количество записей у базы данных не просматривая ее.