Скачать 1.91 Mb.
|
2. Преобразование значений полейДля доступа к значениям поля используется свойство Values, которое может принимать различные типы. Свойство Values удобно использовать для преобразования типа значения. В Delphi предусмотрены следующие свойства приведения типов значений: - propertyAsBoolean : Boolean; - property AsCurrency: Currency; - property AsDateTime: DateTime; - property AsFloat: Double; - property Aslnteger: Integer; - property AsString: String; - propertyAsVariant: Variant; 3. Создание виртуальных полей Как было показано выше, для каждого физического поля можно создать компонент TField. С помощью редактора полей Field Editor к уже существующим компонентам TField и принадлежащим физическим полям можно добавить виртуальные поля, создав для них спои компоненты TField. Разрешено создание трёх видов виртуальных полей— вычисляемые поля (Calculated), поля подстановки (Lookup) и пустые поля (Data). 3.1. Создание вычисляемых полей Вычисляемые поля могут быть двух типов — строковые и числовые. Значения вычисляемых полей вычисляются по формуле. При работе с символьными полями под формулой будем иметь в виду процедуру конкатенации (сцепления строк). Создание вычисляемого поля выполняется в два этапа — описание поля и создание формулы для вычисления значения поля. Рис.4. Создание вычисляемого поля
Пример 1. Создать вычисляемое поле подстановки. В данном примере для дочерней таблицы «Author» в соответствующем компоненте Table был вызван редактор полей Field Editor и выбрана команда «New Field». Имя дочерней таблицы «Author» и диалоговой панели «New Field» не указывается. В верхней части диалоговой панели «New Field» описано создаваемое виртуальное поле подстановки «Fam» строкового типа размером 25. В нижней части диалоговой панели «New Field» по первичному ключу «Key Jam» (поле ввода «Key Fields») дочерней таблицы «Author» установлена связь с родительской таблицей «Fam» (поле ввода «Dataset») по первичному ключу «KeyJam» (поле ввода «Lookup Keys»). По установленной связи между таблицами в дочернюю таблицу «Author» в поле подстановки «Fam» (поле ввода «Name») из родительской таблицы «Fam» передается значение поля «Fam» (поле ввода «Result Fields»). Компонент Table может иметь любое количество виртуальных полей подстановки, которые получают значения из физических или виртуальных полей родительской таблицы (или таблиц). Рис. 5. Создание поля подстановки 3.3 Создание пустых полей Если в диалоговой панели «New Field» установить переключатель «Field type» в положение «Data», то будет создано пустое поле. При создании пустого поля определяется его тип и размер. Впоследствии в созданное пустое поле можно будет заносить любую информацию (в соответствии с определенным типом). То есть с помощью этой процедуры создается пустой столбец в компоненте Table, который может отображаться в компоненте DBGrid. Для заполнения созданного пустого поля типа Data используют обработчик события OnGetText компонента TField или обработчик события OnDrawColumnCell сетки. На практике процедура создания пустых полей используется редко. Пустые столбцы можно создавать непосредственно в компоненте DBGrid и потом заполнять их по своему усмотрению. Контольное задание. Создать числовое вычисляемое поле для таблицы Студенты Контрольные вопросы.
Лабораторная работа 8 Манипулирование данными (хранение, добавление, редактирование, удаление данных) Цель работы: научиться модифицировать пользовательский интерфейс приложения базы данных. Образовательные результаты, заявленные во ФГОС третьего поколения: Студент должен уметь: - создавать объекты баз данных в современных системах управления базами данных и управлять доступом к этим объектам; знать: - основы разработки приложений баз данных. Краткие теоретические и учебно-методические материалы по теме лабораторной работы Добавление данных: Компоненты для организации доступа к таблицам БД позволяют выполнять всевозможные операции с наборами данных: добавлять или удалять записи, перемещаться по ним. При этом следует иметь в виду, что в любой момент времени доступна для выполнения конкретных действий только одна запись, называемая текущей. В этой лабораторной работе рассматриваются наиболее часто используемые методы компоненты Table . Основные методы для организации доступа компоненты Table :
Редактирование данных: Компоненты, отражающие информацию, делятся на две категории – те, которые не связаны с таблицами БД, и компоненты, связанные с таблицами и обменивающиеся с ними информацией. В первую категорию входят обычные компоненты Delphi. Компоненты второй категории расположены на странице Data Controls . Почти каждая из них имеет аналог среди обычных компонент; основные отличия заключаются в том, что они могут работать с данными, хранящимися в БД. К этой группе относится компонента DBEdit , которая используется для ввода текстовой однострочной информации. Чтобы компонент DBEdit видел данные из поля таблицы, следует указать в свойствах:
Этот компонент с заданными уже свойствами может появиться автоматически при перетаскивании имени поля из окна редактора полей . Задание 1. Модифицируйте пользовательский интерфейс приложения 1. Откройте созданное приложение. 2. Разместите на форме три компоненты SpeedButton из палитры Additional . Одна из кнопок будет добавлять запись, другая – изменять данные в записи, третья – удалять. Назовите их соответственно. Задание 2. Организуйте добавление данных
На форме расположены 4 компоненты Edit , компонент DateTimePicker с закладки Win 32 , компонент CheckBox и компонент RadioGroup. 2) Текст процедуры для события OnClick кнопки «Добавить» на форме Студенты : procedure TForm1.SpeedButton1Click(Sender: TObject); begin Form 2. ShowModal ; //открывает форму «Добавление записи» end; 3) Текст процедуры для события OnClick кнопки «ОК» на форме Добавление записи : procedure TForm2.Button1Click(Sender: TObject); begin Form1.Table1.Insert; Form1.Table1.FieldByName('SFio').Text:=Edit1.Text; Form1.Table1.FieldByName('SOsn').Text:=Edit2.Text; Form1.Table1.FieldByName('SNom').Text:=Edit3.Text; Form1.Table1.FieldByName('SKurs').Text:=Edit4.Text; Form1.Table1.FieldByName('SData').AsDateTime:=DateTimePicker1.Date; if CheckBox1.Checked then Form1.Table1.FieldByName('SStip').Text:='да' else Form1.Table1.FieldByName('SStip').Text:='нет'; //при нажатии на флажок полю SStip (Стипендия) передается //значение True , в противном случае вводится передается // значение False case RadioGroup1.ItemIndex of 0: Form1.Table1.FieldByName('SSpec').Text:='Математика'; 1: Form1.Table1.FieldByName('SSpec').Text:='Физика'; end; if form1.Table1.Modified then form1.Table1.Post; close ; Комметарий: в строке Form 1. Table 1. Insert вызывается метод, который допускает вставку новой строки в таблицу, которая находится на форме «Студенты ». Без вызова этого метода дальнейшая работа по вставке записи в таблицу невозможна. Запись Form 1. Table 1. FieldByName (' SFio '). Text :=Edit 1. Text означает, что текст, который находится в Edit 1 по нажатии кнопки будет перенесен в таблицу на форме «Студенты » в новую запись в текстовое поле ФИО . Остальные записи в процедуре работают аналогичным образом. Запись if form 1. Table 1. Modified then form 1. Table 1. Post сохраняет изменения в таблице. Close – закрывает форму «Добавление записи ». 4) По нажатии кнопки Cancel осуществляется выход. То же и на форме «Редактирование записи». Задание 3. Организуйте редактирование данных.
2) В случае перетаскивания поля логического типа, на форме автоматически устанавливается компонента DBCheckBox , что не всегда удобно.
3) Текст процедуры для события OnClick при нажатии клавиши «Изменить» на форму Студенты : begin Form3.ShowModal // вызов Form3 end; 4) Текст процедуры для события OnClick при нажатии клавиши «Сохранить» на формуРедактирование : begin if form1.Table1.Modified then form1.Table1.Post; // все изменения в таблице сохраняются close ; end; 5) Пользователь имеет возможность редактировать записи в таблице напрямую. Чтобы это предотвратить используется свойство компоненты DBGrid dgEditing . Нужно выделить DBGrid 1 и в свойстве Options ► dgEditing инспектора объектов поставить false . Задание 4. Организуйте удаление данных Текст процедуры для события OnClick при нажатии клавиши «Удалить» на форме Студенты : procedure TForm1.SpeedButton3Click(Sender: TObject); begin Table1.Delete //удаляет текущую запись в таблице end; Контрольные вопросы.
Лабораторная работа 9 Создание, перестройка и удаление индекса Цель работы: научиться создавать индексы. Образовательные результаты, заявленные во ФГОС третьего поколения: Студент должен уметь:
знать:
Краткие теоретические и учебно-методические материалы по теме лабораторной работы Индекс (или указатель) — это порядковый номер записи. При вводе исходных данных записям присваиваются порядковые номера по мере их ввода. Индексы можно строить как по значениям одного поля – простой индекс, так и по значениям нескольких полей – сложный индекс. Первичный индекс – это индекс, соответствующий ключевому полю. Первичный индекс всегда один. В то же время допускается неограниченное число индексов для других полей. Вторичный индекс – это индекс, созданный для неключевого поля. Индексы отличаются от первичных ключей тем, что не требуют непременной уникальности значений входящих в их состав полей. Индексы устанавливаются по полям, которые часто используются при поиске и сортировке данных: индексы помогут системе значительно быстрее найти нужные данные или отсортировать их в нужной последовательности. В Delphi предусмотрено два способа построения индексов: 1) с помощью утилиты Database Desktop. В этом случае индексы строятся один раз во время проектирования приложения базы данных и при эксплуатации базы данных нельзя добавлять новые индексы; 2) с помощью команд. В этом случае программист предоставляет пользователю возможность в любой момент времени создавать и удалять индекс. Каждый индекс принадлежит конкретной таблице. Таблица может иметь любое количество индексов. Имена индексов уникальные, т. е. у одной таблицы не может быть двух индексов с одинаковыми именами. В разных таблицах имена индексов могут повторяться. Задания для лабораторной работы: Задание 1. Определите вторичные индексы для созданной таблицы Student.db 1) Открыть таблицу Student.db (File ► Open ► Table ) 2) Из меню Table выбрать пункт Restructure . Откроется окно редактирования полей таблицы. 3) В выпадающем списке Table properties выбрать Secondary Indexes и нажать кнопку Define . В окне Define Secondary Index определяются вторичные индексы: С помощью флажков группы Index options можно определить следующие особенности индекса: · Unique – индекс будет содержать уникальные значения; · Maintained – индексные поля сортируются по возрастанию значений; · Case sensitive – индекс чувствителен к регистру букв в текстовых полях; · Descending – индексные поля сортируются по убыванию значения. 4) Выбрать « SFio » из списка Fields и нажать кнопку с изображенной стрелкой вправо. В спискеIndexed fields (индексированные поля) появится « SFio ». То же самое проделать с полями « SSpec » и« SKurs ». 5) Закрыть окно“Define Secondary Index” 6) В появившемся окне ввести имя индекса IDFio и нажать "OK" . |
Республики башкортостан Государственное бюджетное образовательное учреждение среднего профессионального образования |
Республики башкортостан Государственное бюджетное образовательное учреждение среднего профессионального образования |
||
Республики Мордовия Государственное бюджетное образовательное учреждение... Федерации от 22 июня 2010 года №678. Организация – разработчик Государственное бюджетное образовательное учреждение Республики Мордовия... |
Республики Татарстан Государственное бюджетное образовательное учреждение... Государственное бюджетное образовательное учреждение среднего профессионального образования |
||
Областное государственное бюджетное образовательное учреждение среднего... Областное государственное бюджетное образовательное учреждение среднего профессионального образования |
Отчет о результатах самообследования государственное бюджетное образовательное... Полное наименование образовательного учреждения в соответствии с Уставом Государственное бюджетное образовательное учреждение среднего... |
||
Отчет о результатах самообследования государственное бюджетное образовательное... Полное наименование образовательного учреждения в соответствии с Уставом Государственное бюджетное образовательное учреждение среднего... |
Образовательное государственное бюджетное учреждение среднего профессионального... Министерство здравоохранения иркутской области образовательное государственное бюджетное учреждение |
||
Республики Татарстан Государственное автономное образовательное учреждение... Государственное автономное образовательное учреждение среднего профессионального образования |
Республики Татарстан Государственное автономное образовательное учреждение... Государственное автономное образовательное учреждение среднего профессионального образования |
||
Республики Башкортостан Государственное автономное образовательное... Городская студенческая научно-практическая конференция «Наука. Фантазия. Реальность», посвященная Году экологии |
Республики Мордовия Государственное бюджетное образовательное учреждение... Разработка проекта основной профессиональной образовательной программы в соответствии с фгос-3: опыт, проблемы, перспективы |
||
Данные учреждения среднего профессионального образования Государственное бюджетное образовательное учреждение среднего профессионального образования Колледж декоративно-прикладного искусства... |
Среднего профессионального образования «государственный медицинский... Областное государственное образовательное бюджетное учреждение среднего профессионального образования |
||
Программам Государственное бюджетное образовательное учреждение среднего... Государственное бюджетное образовательное учреждение среднего профессионального образования |
Отчет о результатах самообследования (по состоянию на 01 апреля 2014г.) Полное наименование образовательного учреждения в соответствии с Уставом: государственное бюджетное образовательное учреждение начального... |
Поиск |