Студопедия
Случайная страница | ТОМ-1 | ТОМ-2 | ТОМ-3
АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатика
ИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханика
ОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторика
СоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансы
ХимияЧерчениеЭкологияЭкономикаЭлектроника

Требования к отчету по лабораторной работе №1.

Читайте также:
  1. II. ТРЕБОВАНИЯ К МЕСТУ ДЛЯ РАЗБИВКИ ЛАГЕРЯ
  2. II. Требования к оформлению статьи
  3. III. ОПИСАНИЕ ЛАБОРАТОРНОЙ УСТАНОВКИ
  4. III. Требования к организации и проведению работ по заготовке древесины
  5. IV. ТРЕБОВАНИЯ К ВОДОСНАБЖЕНИЮ В ЛАГЕРЕ
  6. Nbsp;   Схема лабораторной установки
  7. V. ТРЕБОВАНИЯ К ОРГАНИЗАЦИИ ПИТАНИЯ. ЛИЧНОГО СОСТАВА В ЛАГЕРЕ

Отчет должен содержать:

1. Схему базы данных для учебной постановки задачи.

2. Собственную постановку задачи.

3. Схему базы данных для собственной постановки задачи.

4. Результаты выполнения заданий с соответствующими экран­ными формами и значимыми фрагментами кода приложений.


3. ЛАБОРАТОРНАЯ РАБОТА №2

 

Тема работы: работа с отдельными полями наборов данных в приложениях баз данных, создаваемых в среде Delphi.

Длительность работы: 6 академических часов.

 

Перечислим основные компоненты, предназначенные для работы с наборами данных (НД) в приложениях Delphi.

TDatabase – определяет общие параметры связи с БД (имеет большое значение для серверных БД; для локальных может не использоваться, поскольку параметры связи заданы в Alias BDE).

TTable – компонент для работы с набором данных в виде отдельной таблицы БД.

TQuery – компонент для работы с набором данных, полученным в результате выполнения SQL запроса к БД (его использование характерно для приложений серверных БД).

TStoredProc – компонент для работы с набором данных, полученным в результате выполнения хранимой процедуры (также используется при разработке приложений серверных БД).

TTable, TQuery, TStoredProc имеют общего предка TDataSet, определяющего основные свойства и методы работы с набором данных независимо от его происхождения. Сам TDataSet непосредственно в приложениях не используется.

Замечание: в данных лабораторных работах будет рассмотрен компонент TTable. Тем не менее, рассматриваемые приемы (по большей своей части) применимы и для TQuery, и TStoredProc.

 

3.1. КОМПОНЕНТЫ ДЛЯ РАБОТЫ С ОТДЕЛЬНЫМИ ПОЛЯМИ НАБОРОВ ДАННЫХ

 

3.1.1. КОМПОНЕНТ TFIELD

 

TField – компонент для работы с отдельными полями наборов данных. Непосредственно в приложениях не используется. Используются его потомки TStringField, TIntegerField и т.д.

Каждому полю набора данных (НД) может быть поставлен в соответствие компонент TField. Если хотя бы для одного поля набора данных определен TField, то в приложении будут доступны только те поля, для которых созданы компоненты TField. Если ни для одного поля набора данных TField не создавался, то по умолчанию доступны все поля. Эту особенность можно, в частности, использовать для ограничения доступа к отдельным полям НД.

Замечание: использование компонентов TField при создании приложений обеспечивает гораздо более гибкую работу и предоставляет в распоряжение разработчика массу полезных инструментов. Поэтому использование TField рекомендовано всегда, за исключением самых простых англоязычных приложений.

Компоненты TField создаются с помощью редактора полей (рис. 16). Для этого в контекстном меню набора данных выбирается пункт Fields Editor…, после чего появляется окно редактора. Из его контекстного меню можно создать компоненты TField для всех полей НД (Add all fields) или только для выбранных (Add fields...).

 

 

Рис. 16. Редактор полей и его контекстное меню

 

Компонентам TField по умолчанию (автоматически) присваиваются имена вида: имя набора данных + имя поля. Например, LicaTName, NalichieTKolvo. Соответственно, следует избегать применения подобных имен в других целях.

Помимо имени, для каждого компонента TField можно задать ряд других свойств: только для чтения (ReadOnly), требование обязательного ввода значения (Required), формат показа значения (DisplayFormat), минимальное и максимальное значения и т.д.

Компонент TField обеспечивает доступ к полю в целом, а не только к его значению. Для доступа к значению, хранящемуся в поле, используются свойства Value, а так же AsBoolean, AsCurrency, AsDateTime, AsFloat, AsInteger, AsString, AsVariant.

 

3.1.2. LOOKUP ПОЛЯ

 

При визуализации дочерних таблиц часто возникает необходимость показа информации из родительских таблиц. Например, при показе таблицы наличия, необходимо показывать не условные номера лиц и предметов, а их реальные наименования; кроме того, следует показывать и цены предметов. В этих целях используются так называемые Lookup поля. Для их создания в контекстном меню редактора полей выбирается пункт NewField….

В появившемся окне (рис. 17) задается имя создаваемого поля (например, PredmetName), его тип (здесь String), для символьных полей - размер (здесь 30); указывается, что это Lookup поле и определяется доступ к родительскому набору данных (Lookup Definition):

Key Fields – поля внешнего ключа, по которым ищется информация в родительском наборе данных (здесь Predmet);

Dataset – родительский набор данных (здесь PredmetyT);

Lookup Keys – поля первичного ключа родительского набора данных, которые соответствуют полям внешнего ключа дочернего набора данных (здесь NPredm);

Result Field – поле родительского набора данных, значение которого будет подставляться в создаваемое Lookup поле (здесь Name).

Аналогично может быть создано Lookup поле для включения в набор данных, связанный с таблицей наличия, цены предметов из родительского набора данных.

На рис. 18 приведен вид формы представления таблицы Nalichie с Lookup полями для наименования и цены предмета.

 

 

Рис. 17. Создание новых полей

 

 

Рис. 18. Таблица наличия с Lookup полями

 

Замечание: Lookup поля можно использовать и для ввода значений в дочернюю таблицу путем выбора соответствующих записей из родительской таблицы.

3.1.3. ВЫЧИСЛЯЕМЫЕ ПОЛЯ

Иногда при визуализации информации, хранящейся в БД, возникает необходимость в показе атрибутов, которые физически отсутствуют в БД, но могут быть легко вычислены на основе атрибутов, представленных в БД. Например, в наборе данных NalichieT показывается количество предметов и их цена; необходимо также показать их общую стоимость, вычисляемую, как произведение количества на цену.

В этих целях используются вычисляемые поля. Они создаются с помощью редактора полей, так же как и Lookup поля, но тип поля указывается, как Calculated. Собственно расчет значений вычисляемых полей производится в обработчике события OnCalcFields соответствующего набора данных. Это событие наступает при любом перемещении по набору данных (в том числе и при открытии НД), кроме того, если свойство НД AutoCalcFields установлено в True, то событие наступает и при любом изменении полей НД.

Замечание 1: событие OnCalcFields может наступать очень часто, поэтому следует минимизировать код его обработчика. Иначе перемещения по набору данных могут существенно замедлиться.

Замечание 2: в обработчике OnCalcFields значения могут присваиваться только вычисляемым полям.

Приведем пример обработчика события OnCalcFields, предназначенного для расчета значения вычисляемого поля Stoimost, как произведения количества на цену предметов.

 

Procedure TForm1.NalichieTCalcFields(TDataset:DataSet);

begin

NalichieT Stoimost.AsFloat:= NalichieTKolvo.AsFloat * NalichieTCena.AsFloat;

end;

 

Вычисляемые поля могут использоваться и для изменения формы визуального представления тех или иных атрибутов. Например, в БД о работниках предприятия хранится информация о семейном положении сотрудников в виде логического поля Family; необходимо визуализировать эту информацию в виде слов: женат, холост, замужем, не замужем в зависимости от пола сотрудника. Процедура расчета значения соответствующего вычисляемого поля SemPol может выглядеть следующим образом:

 

Procedure TForm1.SotrudnikiTCalcFields(TDataset:DataSet);

begin

if SotrudnikiTPol.AsString = ‘М’ then

if SotrudnikiTFamily.AsBoolean then

SotrudnikiTSemPol.AsString:= ‘женат’

else

SotrudnikiTSemPol.AsString:= ‘холост’

else

if SotrudnikiTFamily.AsBoolean then

SotrudnikiTSemPol.AsString:= ‘замужем’

else

SotrudnikiTSemPol.AsString:= ‘не замужем’;

end;

 

Задание.

1. Продумайте, какие вычисляемые и Lookup поля необходимы для Вашего приложения. Создайте их; тексты обработчиков событий OnCalcFields и необходимые экранные формы включите в отчет.

 

3.2. ИСПОЛЬЗОВАНИЕ ВИЗУАЛЬНЫХ КОМПОНЕНТОВ ДЛЯ ВИЗУАЛИЗАЦИИ ИНФОРМАЦИИ, ХРАНИМОЙ В БД

Визуальные компоненты, предназначенные собственно для работы с базами данных, расположены на странице Data Controls. Рассмотрим основные из них, их назначение и наиболее часто используемые свойства.

TDBGrid – предназначен для показа набора данных в табличном виде. Его свойство DataSource должно указывать на компонент TDataSource визуализируемого набора данных.

Набор показываемых на форме столбцов может задаваться двояко.

Если с помощью редактора столбцов (Columns Editor) определен хотя бы один столбец, то в таблице показываются только те столбцы, которые были явно определены в редакторе, и в том виде, в каком они были определены.

Если ни один столбец не определялся с помощью редактора столбцов, то показываются все столбцы набора данных в том виде и в том порядке, в каком они были определены в редакторе полей при создании компонентов TField соответствующего набора данных. Если компоненты TField не создавались, то используется определение полей из самой базы данных.

Как и в случае с редактором полей предпочтительно явное определение показываемых полей в редакторе столбцов, поскольку такой подход обеспечивает большую гибкость.

Для определения столбцов с помощью редактора столбцов в контекстном меню TDBGrid выбирается пункт Columns Editor…, а в контекстном меню появившегося окна пункт Add All Fields. В результате в таблицу будут добавлены все поля. В дальнейшем, поля, не подлежащие показу, удаляются из списка (Delete), а порядок полей в таблице может изменяться перетаскиванием полей в списке редактора столбцов.

Для каждого из столбцов можно указать ряд свойств, в частности:

Alignment – способ выравнивания значений в столбце (влево, вправо, по центру);

ReadOnly – допустимость редактирования значений в столбце;

PickList – список для выбора возможных значений при редактировании (например, это может быть список единиц измерения);

Title – свойства заголовка столбца (текст, шрифт и т.п.).

Сам компонент TDBGrid также имеет ряд свойств, определяющих его поведение. Эти свойства сгруппированы под общим наименованием Options. В частности, наибольший интерес представляют следующие из них:

dgEditing – разрешение на изменение, добавление и удаление записей;

dgAlwaysShowEditor – выбор поля автоматически переводит его в режим редактирования;

dgConfirmDelete – перед удалением записи выдается запрос на подтверждение операции;

dgRowSelect – инверсная полоса показывает всю выбранную запись, а не только выбранное поле (при этом редактирование записи непосредственно в TDBGrid запрещается);

dgAlwaysShowSelection – инверсная полоса показывается всегда (и тогда, когда фокус управления не принадлежит TDBGrid), чтобы пользователю легко было видеть – какая запись является текущей;

dgTabs – клавиша Tab используется для перемещения между столбцами (в обратном направлении – Shift+Tab). Иначе Tab используется для перемещения между компонентами.

Перемещение по таблице возможно с помощью клавиш управления курсором, клавиши Tab и мыши.

Редактирование, добавление и удаление записей непосредственно в DBGrid допускается, если:

свойство ReadOnly соответствующего НД установлено в False;

свойство ReadOnly самой DBGrid – False;

опция dgEditing – True;

свойство ReadOnly соответствующего столбца – False.

Для редактирования значения некоторого поля необходимо, находясь в нем, нажать Enter (или двойной щелчок мыши) или сразу начать набирать новое значение. При этом индикатор текущей записи в самой левой колонке DBGrid изменит вид с на I.

Для подтверждения изменений, внесенных в поле, следует нажать Enter или перейти к другому полю (Tab). Для отмены изменений следует нажать Esc. Для подтверждения изменений, внесенных во все поля записи, необходимо перейти к другой записи. Для отмены - второй раз нажать Esc.

Замечание: все изменения, вносимые в НД, должны соответствовать правилам БД (ссылочная целостность, бизнес-правила и т.п.), зафиксированным при создании базы. В противном случае изменения будут отвергнуты, и последует сообщение об ошибке (например, Key Violation, если нарушена уникальность первичного ключа или уникального индекса).

Для вставки новой записи необходимо нажать Insert или, находясь на последней записи, клавишу ↓. Для удаления записи – Ctrl+Delete.

Визуальные компоненты для работы с отдельными полями текущей записииспользуются в тех случаях, когда применение DBGrid вообще нецелесообразно (например, когда в записи много полей или они имеют большой размер) или когда нецелесообразно редактирование записей непосредственно в таблице DBGrid. Иногда DBGrid и компоненты для отдельных полей используются одновременно (например, в DBGrid показываются основные поля, а все остальные поля показываются отдельно только для текущей записи). Возможны и другие применения этих компонентов.

В свойствах визуальных компонентов, предназначенных для работы с отдельными полями, помимо указания набора данных в DataSource указывается также имя конкретного поля в свойстве DataField. Перечислим наиболее часто используемые компоненты (их вид приведен на рис. 19).

TDBText - предназначен для показа значения поля без возможности его редактирования (подобно Label).

TDBEdit - позволяет редактировать значение поля, которое находится в свойстве Text. При вводе автоматически отслеживается соответствие вводимых символов типу поля. Например, в числовое поле нельзя вводить буквы.

TDBCheckBox - обычно используется для отображения логических значений. Основное свойство - Checked. Когда оно установлено в True в компоненте проставляется «галка» выбора. Собственно значения поля, которым соответствует состояние свойства Checked, указываются в свойствах ValueChecked и ValueUnchecked.

 

 

Рис. 19. Визуальные компоненты для работы с отдельными полями

TDBRadioGroup - набор переключателей с зависимой фиксацией. Варианты выбора перечисляются в свойстве Items. Номер выбранного варианта содержится в свойстве ItemIndex (нумерация начинается с нуля).

TDBComboBox - выпадающий список выбора. Items - список вариантов; ItemIndex - выбранный вариант.

TDBLookupComboBox (рис. 20) - по виду аналогичен TDBComboBox, но вместо фиксированного набора вариантов используется для подстановки значений в поля дочернего НД путем выбора соответствующих значений из родительского НД. Например, в записях таблицы наличия содержится условный номер предмета, но при вводе и показе значений этого поля пользователь должен иметь дело не с условным номером предмета, а с его наименованием. В таких случаях и используется TDBLookupComboBox. Его работа определяется следующими свойствами:

DataSource - указывает на TDataSource дочернего НД (в данном примере NalichieDS), с которым ведется работа;

DataField - поле дочернего НД (Predmet);

ListSource - указывает на TDataSource родительского НД (PredmetyDS);

ListField - поле родительского НД, значения которого будут показываться в списке выбора (Name);

KeyField - поле родительского НД (NPredm), значение которого будет присвоено полю дочернего НД, указанному в свойстве DataField (Predmet), в результате выбора, сделанного пользователем.

 

 

Рис. 20. Компонент TDBLookupComboBox и его свойства

Задание.

2. Создайте приложение, на форме которого будут отображаться все необходимые таблицы Вашей базы данных в виде, удобном для пользователя (пример см. на рис. 21). Для отображения каждой таблицы используйте отдельную страницу (TabSheet) компонента управления страницами (PageControl).

Обратите внимание, что таблица типов лиц в приведенном примере не отображается на форме приложения. Это справочная таблица, которая заполняется один раз и в дальнейшем ее содержание не изменяется. Поэтому в данном конкретном случае нет необходимости обеспечивать для нее полноценный интерфейс доступа.

Экранные формы работающего приложения включите в отчет.

 

 

Рис. 21. Пример визуализации таблицы наличия

 


Дата добавления: 2015-07-07; просмотров: 95 | Нарушение авторских прав


<== предыдущая страница | следующая страница ==>
ЛОКАЛЬНЫЕ БАЗЫ ДАННЫХ| Требования к отчету по лабораторной работе №2.

mybiblioteka.su - 2015-2024 год. (0.018 сек.)