Мегаобучалка Главная | О нас | Обратная связь


Размещение в модуле данных невизуальных компонент для доступа к данным



2016-09-16 453 Обсуждений (0)
Размещение в модуле данных невизуальных компонент для доступа к данным 0.00 из 5.00 0 оценок




Разместим в модуле данных один экземпляр компоненты TIBDatabaseдля связи с БД и один экземпляр TIBTransaction для выполнения транзакций.У компоненты TIBDatabase следует установить следующие свойства:

* Database Name –значение этого свойства – полное имя файла БД с расширением gdb. Для отладки приложения, будем использовать локальное соединение с БД. Если файл БД находится в том же каталоге, что и само приложение, можно просто указать имя файла: School.gdb; если файл содержится в каталоге верхнего уровня : ../ School.gdb. В дальнейшем, когда файл БД будет располагаться на сетевом компьютере-сервере, необходимо будет найти его в сети, нажав на кнопку "..."рядом со свойством Database Name. Обычно для этих целей в клиентском приложении создается диалоговое окно, в котором и вводится путь к файлу базы данных (IP-адрес).

* LoginPrompt –задание этого свойства равным False говорит о том, что при соединении с БД имя пользователя и пароль не будут запрашиваться. Установим именно этот режим, что упростит проектирование приложения. Затем, когда приложение будет создано и полностью отлажено, можно будет вернуть значение True данного свойства.

* Connected –признак, определяющий активна ли база данных. Его задают равным False, а в программе, в момент активизации главной формы, задают равным True. Также можно активизировать БД, вызвав метод компоненты Open, а в момент закрытия главной формы – метод Close.

* DefaultTransaction –имя экземпляра компоненты TIBTransaction

* Name – имя компоненты TIBDatabase(назовем ее IBDBSchool).

*В свойстве Params(параметры соединения) через редактор следует задать строки:

user_name=SYSDBA

password=masterkey

lc_ctype=WIN1251

Свойство DefaultDatabaseкомпоненты TIBTransaction следует установить равным имени компоненты TIBDatabase,а свойство DefaultAction = taCommit (что означает, что все операции с БД будут подтверждаться).

В модуле данных также будут размещаться экземпляры компоненты TIBDataSetдля выполнения операторов SQL и связанные с ними экземпляры компоненты TDataSource(страница Data Access). Компонента TDataSourceпредставляет собой промежуточное звено для связи невизуальной компоненты TIBDataSetс визуальными компонентами, размещаемыми на формах.

Компонента TIBDataSetимеет следующие свойства:

· Database –имя компоненты TIBDatabase, оно выбирается из списка доступных имен.

· Transaction –имя компоненты TIBTransaction.

· DeleteSQL(или QDelete) – свойство, в котором следует записать оператор SQL для удаления строк из БД

· InsertSQL(или QInsert) – свойство, в котором следует записать оператор SQL для добавления строки к БД

· ModifySQL(или QModify) – свойство, в котором следует записать оператор SQL для изменения строк БД

· SelectSQL(или QSelect) – свойство, в котором следует записать оператор SQL для выборки строк и столбцов БД.

Данная компонента позволяет определить различные операторы SQL для удаления, вставки и изменения записи, в том числе и отличных от простых операторов DELETE, INSERT, UPDATE; также возможен вызов хранимых процедур, осуществляющих указанные действия. Эти операторы содержатся соответственно в свойствах DeleteSQL, InsertSQL, ModifySQL.

Рассмотрим установку этих свойств на примере работы с таблицей Class. В модуль данных помещается компонента TIBDataSet и устанавливаются следующие значения ее свойств (табл. 1).

Таблица1. Установка свойств компоненты TIBDataSet

Свойство Значение
Name IBDSClass
Database IBDBSchool (имя компоненты TIBDatabase, выбирается из выпадающего списка)
Transaction IBTransaction1 (выбирается из списка)
DeleteSQL EXECUTE PROCEDURE DEL_CLASS :NUM_CLASS
InsertSQL EXECUTE PROCEDURE INS_CLASS :NUM_CLASS, :NAMECLASS
ModifySQL EXECUTE PROCEDURE UPD_CLASS :NUM_CLASS,:NAMECLASS
SelectSQL SELECT * FROM CLASS

В свойствах DeleteSQL, InsertSQL, ModifySQL вызывается хранимая процедура для выполнения соответствующего действия. Порядок параметров, указанных в вызове процедуры должен совпадать с порядком параметров, указанным при ее создании. Имя параметра процедуры предваряется двоеточием.

Для данной компоненты помещается экземпляр компоненты TDataSource, в свойство DataSet которой выбирается имя IBDSClass.

Аналогичным образом добавим пары компонент TIBDataSet и TDataSource для каждой таблицы БД.

 

В свойстве SelectSQL компоненты TIBDSPupil, помещен следующий оператор, позволяющий отображать фамилии учеников в алфавитном порядке:

 

SELECT NUM_PUPIL,NUM_CLASS,FIO_PUPIL,BALL

FROM PUPIL ORDER BY FIO_PUPIL

 

Следует определить аналогичную сортировку также для учителей и предметов.

Для проверки правильности установки всех свойств компоненты TIBDataSetследует при разработке проекта присвоить ее свойству Activeзначение True, что соответствует открытию НД.

Для каждой компоненты TIBDataSet необходимо сделать доступными все поля. Для этого, сделав текущей нужную компоненту,следует нажать правую кнопку мыши и выбрать пункт контекстного меню Fields Editor.... Появится окно, изображенное на рис. 23:

Рис. 23. Добавление полей набора данных

Кроме обычных полей, в Delphi имеется возможность создания вычисляемых полей и полей выбора данных (lookup-полей). Поле выбора данных одного НД содержит значения из другого набора данных, связанного по ключу с НД, к которому принадлежит это поле. Первый НД называется родительским, второй – дочерним. Например, при вводе данных об ученике необходим выбор имени класса, в котором данный ученик учится, для чего создается поле выбора.

Поля выбора могут использоваться для показа дополнительной информации из дочернего НД при навигации по родительскому набору, если наборы связаны отношением 1:1, или для выбора значения записи дочернего НД из списка всех возможных значений родительского набора при связи 1:N. В последнем случае родительский набор играет роль справочника.

Создадим lookup-поле cl компоненты IBDSPupil для выбора и отображения названия класса. Для этого в редакторе полей данного компонента (Fields Editor...) нажмем правую кнопку мыши и выберем пункт контекстного меню New field.... Появится окно, изображенное на рис. 24. Для определения поля выбора данных необходимо создать новое поле в редакторе полей и выбрать переключатель Lookup, после чего становятся доступными элементы группы Lookup definition, с помощью которых устанавливаются параметры связи наборов данных.

Рис. 24. Параметры поля выбора в окне добавления нового поля.

В свойство поля Name введем cl, тип установим String, size (размер) – 3 символа. В качестве родительского набора данных (Dataset) выберем IBDSClass, поле дочернего НД, возвращаемое в качестве результата (Result Field) установим равным NAMECLASS. Key Fields и Lookup Keys определяют поля связи родительского и дочернего НД (в нашем случае – Num_class).

Аналогично следует создать поля выбора для компоненты IBDSTeach_Pred, отображающей информацию о нагрузке учителя по предмету. Здесь будет два поля выбора – для выбора предмета (связь с IBDSPredmet) и выбора учителя (связь с IBDSTeacher).

Использование полей выбора будет показано далее.

Следует отметить, что компонента TIBDataSetможет обрабатываться методами для последовательной обработки НД. Для этой цели имеются следующие свойства и методы компоненты:

property EOF:Boolean; Проверка, достигнут ли конец НД;

procedure First; Установка указателя на первую запись НД;

procedure Next; Переход к следующей записи НД;

procedure Prior; Переход к предыдущей записи НД;

procedure Last; Установка указателя на последнюю запись НД;

Для поиска необходимых данных применяются следующие методы:

function Locate(const KeyFields: String; const KeyValues: Variant; Options: TLocateOptions): Boolean; Поиск в НД записи, поля которой совпадают с указанными значениями и установка ее в качестве текущей.

function Lookup(const KeyFields: String; const KeyValues: Variant; const ResultFields: String): Variants; – Находит запись, удовлетворяющую условию, но не делает ее текущей, а возвращает значения некоторых полей этой записи.

Пример поиска данных будет приведен далее.

Кроме того, эта компонентаимеет метод FieldByName, аргументом которого является строка с именем поля; метод позволяет обращаться к полю по его имени. Например:

 

IBDSPupil.FieldByName('FIO_pupil').Value := 'Иванов И.И.';

 

Аналогично можно получать значение поля конструкцией вида «компонента TIBDataSet [‘имя_поля’]»:

 

IBDSPupil ['FIO_pupil'] := 'Иванов И.И.';

 

Свойство Fields позволяет обращаться к полю НД по его индексу (порядковому номеру):

 

IBDSPupil.Fields[1].Value := 'Иванов И.И.';

 



2016-09-16 453 Обсуждений (0)
Размещение в модуле данных невизуальных компонент для доступа к данным 0.00 из 5.00 0 оценок









Обсуждение в статье: Размещение в модуле данных невизуальных компонент для доступа к данным

Обсуждений еще не было, будьте первым... ↓↓↓

Отправить сообщение

Популярное:
Почему двоичная система счисления так распространена?: Каждая цифра должна быть как-то представлена на физическом носителе...
Почему человек чувствует себя несчастным?: Для начала определим, что такое несчастье. Несчастьем мы будем считать психологическое состояние...
Организация как механизм и форма жизни коллектива: Организация не сможет достичь поставленных целей без соответствующей внутренней...



©2015-2024 megaobuchalka.ru Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. (453)

Почему 1285321 студент выбрали МегаОбучалку...

Система поиска информации

Мобильная версия сайта

Удобная навигация

Нет шокирующей рекламы



(0.007 сек.)