- •Практический раздел содержание
- •Лабораторная работа №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
Поля и класс tField
Если для данных в целом используют компоненты типа Table, т.е. потомки TDataSet, то для, полей, которые представляют собой отдельные столбцы данных в таком наборе, определен класс TField. В свою очередь, от этого класса происходят типизированные классы полей типа TIntegerField, TStringField и т.п.
Для доступа к полям записей у набора данных имеется ряд специальных методов и свойств, доступных во время выполнения. Чаще всего используются метод FieldByName, позволяющий обратиться к полю по его имени. Альтернативным и зачастую менее надежным способом является использование массива Fields, обеспечивающего доступ к полю по его порядковому номеру. И в том и в другом случае мы получим объект типа TField. Основные свойства этого класса приведены в таблице 19.1.
Таблица 19.1. Основные свойства TField
Свойство |
Тип |
Описание |
Alignment |
TAlignment |
Определяет выравнивание при выводе значения поля в визуальном компоненте |
AsBCD |
TBcd |
Содержит значение поля в двоичном виде (BCD) |
AsBoolean |
Boolean |
Содержит значение поля в виде булева значения |
AsCurrency |
Currency |
Содержит значение поля в виде Currency |
AsDateTime |
TDateTime |
Содержит значение поля в виде даты и времени |
AsFloat |
Double |
Содержит значение поля в виде вещественного числа |
AsInteger |
Integer |
Содержит значение поля в виде целого |
AsString |
String |
Содержит значение поля в виде строки |
AsVariant |
Variant |
Содержит значение поля в виде вариантного типа |
Calculated |
Boolean |
Определяет, является ли поле вычисляемым |
CanModify |
Boolean |
Указывает, может или нет быть изменено значение в данном поле |
DataSet |
TDataSet |
Определяет набор данных, которому принадлежит данное поле |
DataType |
TFieldType |
Указывает на тип данных поля |
DisplayLabel |
String |
Определяет текст, выводимый в качестве заголовка столбца в таблице DBGrid |
DisplayWidth |
Integer |
Определяет число символов, необходимое для вывода значения поля в визуальном компоненте |
FieldName |
String |
Определяет имя поля в физической таблице БД |
Index |
Integer |
Определяет порядковый номер поля в наборе данных |
IsIndexField |
Boolean |
Указывает, является ли данное поле индексированным |
IsNull |
Boolean |
Возвращает истину, если текущее значение поля пустое |
ReadOnly |
Boolean |
Определяет, может ли поле быть изменено пользователем |
Value |
Variant |
Содержит текущее значение поля |
Visible |
Boolean |
Определяет, должно ли это поле быть видимым при отображении в таблице DBGrid |
Здесь, прежде всего, следует выделить группу из 8 свойств, начинающихся с As. Все они, по сути, являются аналогами функций приведения к типу, поскольку, объект TField универсален и может содержать данные любого типа из встречающихся в СУБД. Например, если речь идет о полях из нашей таблицы bills, то обратиться к полям этой таблицы для получения их значений в "естественном" виде следует использовать подобный код:
x:=Table1.FieldByName('BILL_CUST').AsInteger;
y:=Table1.FieldByName('BILL_SUMM').AsCurrency;
В то же время, если значения этих полей понадобятся нам для вывода в строковом виде (например, в поле однострочного редактора или), то ничего не мешает нам сразу же использовать приведение к нужному типу. В данном случае (с редактором и меткой) - к строковому:
Label1.Caption:=Table1.FieldByName('BILL_CUST').AsString;
Edit1.Text:=Table1.FieldByName('BILL_SUMM').AsString;
Если же при работе с записью нам не требуется явно приводить тип, то вполне подойдет свойство Value, содержащее текущее значение поля в БД. Оно же является одним из наиболее часто используемых, благодаря универсальности этого типа данных. Например, мы можем проверить значение поля на соответствие какому-либо условию, просто написав:
if Fields[1].Value > 100 then Fields[1].Value:=200;
При этом, правда, следует не забывать про то, что не всякий тип может быть приведен к нужному (в данном случае - к целому или вещественному числу).
Свойства DataSet и FieldName отвечают за привязку объекта к конкретным данным, а Calculated и IsIndexFiels позволяют определить параметры поля в СУБД. Большинство остальных свойств так или иначе влияют на параметры вывода информации из набора данных в визуальные компоненты наподобие DBGrid.
Что касается методов, то тут следует отметить метод Clear, устанавливающий значение поля в Null, и, пожалуй, IsValidChar, при помощи которого можно проверить, является ли указанный в качестве аргумента символ допустимым для данного поля:
if Table1.FieldByName('BILL_SUMM').IsValidChar('1') then
caption:='Yes!'
else caption:='No.'
В данном случае заголовок окна получит надпись "Yes!", поскольку символ "1" можно использовать для ввода в поле числового типа. Но если бы мы проверяли на допустимость ввода какой-либо буквы, то получили бы отрицательный ответ.
