Создание вычисляемых полей и полей выбора.
Вычисляемое поле - это поле БД, значение которого вычисляется на основании значений других полей записи. Данное поле не содержится в базе данных,а только выводит значения при работе приложения. Эти поля нельзя использовать как ключевые. Рассмотрим 2 способа работы с вычисляемыми полями. Первый способ состоит в том, что все поля, в том числе и вычисляемое, мы создаем сразу в БД - MS Access,. Что касается второго способа, то вычисляемое поле мы создадим в нашем проекте, через компоненты TAdoQuery или TAdoTable.
Пример: "Карточка медицинских услуг" 1. Код пациента 2. ФИО Обследуемого 3. Диагноз 4. Количество дней лечения 5. Дата обследования 6. Цена услуги Нужно создать вычисляемое поле "Сумма" равная "4 поле * 6 поле"
Начинаем с создания БД в программе MS Access. Задаем для таблицы БД следующую структуру:
Заполняем таблицу данными.
После того как БД в MS Access у нас создана, переходим к самому проекту в Delphi и размещаем на форме следующие компоненты:
1. TDataSource 2. TDBGrid 3. TADOConnection 4. TADOQuery 5. TButton
Настраиваем подключение к нашей БД. Далее, нам необходимо все наши компоненты связать между собой: - Выделяем компонент TADOQuery и в свойстве Connection указываем- TADOConenction. - Далее, выделяем компонент TDataSource и в свойстве DataSet указываем TADOQuery - Затем, выделяем компонент TDBGrid и в свойстве DataSource указываем TDataSource. После этого необходимо добавить все наши поля. Для этого нужно активировать наш запрос и подключение. В свойстве компонента TADOConenction - Connected устанавливаем True, а в свойстве компонента TADOQuery - SQL, напишем следующий запрос
SELECT * FROM Поликлиника
Поликлиника- имя нашей таблицы в БД. Ну и далее, активируем наш запрос, в свойстве Active, компонента TADOQuery устанавливаем в True. Далее нажимаем, двойным щелчком мыши по компоненту TADOQuery и появляется окно:
В данном окне, нажимаем правой кнопкой мыши, и из контекстного меню, выбираем пункт Add all fields. В список добавятся все поля нашей таблицы. Ну, а теперь создадим наше Вычисляемое поле. Для этого, в данном окне, нажимаем правой кнопкой мыши и из контекстного меню выбираем пункт New Field, после чего появиться окно, где необходимо заполнить поля, как показано на рисунке:
Указываем имя нашего вычисляемого поля, устанавливаем указатель на Calculated и указываем тип данных - Integer, можно и с плавающей точкой, какой Вам удобно. Ну, а дальше, выделяем компонент TADOQuery и на событие OnCalcFields напишем следующий код:
procedure TForm1.ADOQuery1CalcFields(DataSet: TDataSet); begin ADOQuery1Summa.AsInteger:=ADOQuery1kol_den.AsInteger*ADOQuery1zena_ysl.AsInteger; end; Необходимо отметить, что свойство AutoCalcFields компонента TADOQuery должно быть установлено в True. Как было сказано раньше, можно сразу же в БД создать вычисляемое поле, а можно в проекте. Теперь при изменении значения в любой из ячеек, значение нашего вычисляемого поля автоматические будет меняться.
Задание: Создать БД следующей структуры с визуальными компонентами DBGrid, DBLabel, DBText, DBNavigator, DBImag, а так же создать вычисляемое поле.
Вариант 1«Аэропорт» 1. Дата 2. Количество проданных билетов 3. Страна 4. ФИО пассажира 5. Цена билета Создать вычисляемое поле «Сумма» равная «2 поле умножить на 5 поле»
Вариант 2 «Железнодорожный вокзал» 1. ФИО рабочего 2. № рабочего 3. Время выезда поезда 4. Направление 5. Время приезда Создать вычисляемое поле «Время в движении» равная «5 поле - 3 поле» Вариант 3 «Автобусный парк» 1. № автобуса 2. Район маршрута 3. Количество рабочих часов 4. ФИО контролера 5. Цена билета Создать вычисляемое поле «Сумма» равная «3 поле * 5 поле» Вариант 4«Карточка медицинских услуг» 1. ФИО обследуемого 2. Диагноз 3. Количество дней лечения 4. Дата обследования 5. Цена услуги Создать вычисляемое поле «Сумма» равная «3 поле * 5 поле» Вариант 5 «Магазин продуктовый» 1. ФИО рабочего 2. Наименование продукта 3. Цена продукта 4. Время продажи 5. Количество (масса) Создать вычисляемое поле «Сумма» равная «3 поле * 5 поле»
Вариант 6«Учет библиотеки» 1. № карточки студента 2. Наименование книги 3. Дата выдачи 4. ФИО студента 5. Дата сдачи Создать вычисляемое поле «Время использования» равная «5 поле – 3 поле»
Вариант 7 «Столовая» 1. Дата 2. № кассира 3. Сумма оплаты 4. Время 5. Остаток кредита Создать вычисляемое поле «Сумма» равная «3поле – 5 поле»
Вариант 8«Оплата за обучение» 1. ФИО студента 2. Дата приема 3. Сумма оплаты 4. № кассира 5. № группы Создать вычисляемое поле «Сумма» равная «170000тг - 3 поле»
Вариант 9«Место начальника цеха» 1. ФИО начальника 2. Количество подчиненных 3. Дата сдачи работ 4. Оплата 1 дня рабочего Создать вычисляемое поле «Зарплата» равная «2 поле *4 поле»
Вариант 10 «Бланк бухгалтера» 1. Наименование предприятия 2. Сумма выплаченных налогов 3. Количество рабочих 4. Зарплата рабочих 5. Налог с заработной платы Создать вычисляемое поле «Зарплата 1 рабочего» равная «4 поле / 3 поле» Вариант 11«Преподаватель колледжа» 1. ФИО преподавателя 2. Должность 3. Количество часов 4. Оплата за 1 час Создать вычисляемое поле «Сумма» равная «3поле * 4 поле»
Вариант 12 «Приемная комиссия» 1. ФИО абитуриента 2. Адрес абитуриента 3. Начальная сумма 4. Отметка на экзаменах 5. Дата поступления Создать вычисляемое поле «Сумма» равная «170000тг – 3 поле»
Вариант 13 «Ветеринарная клиника» 1. Дата поступления 2. ФИО хозяина 3. Сведения о питомце 4. Диагноз 5. Стоимость лечения за 1 день Создать вычисляемое поле «Сумма» равная «дата – 1 поле * 5 поле»
Вариант 14«Плавательный бассейн» 1. ФИО тренера 2. Количество человек в группе 3. Время проведения занятий 4. Стоимость 1-го часа Создать вычисляемое поле «Сумма» равная «2 поле * 4 поле»
Вариант 15 «Денежные переводы» 1. Дата перевода 2. ФИО получателя 3. ФИО отправителя 4. Сумма переводов 5. Процент от перевода Создать вычисляемое поле «Итоговая сумма» равная «4 поле + 5 поле»
Контрольные вопросы: 1. Какие методы навигации в компоненте DBNavigator? 2. Какие методы навигации существуют? 3. Что такое вычисляемое поле и как его создать?
|