Каждая база данных состоит из таблиц, каждая таблица - из записей. Каждая запись в свою очередь представляет собой набор полей. Поле набора данных - это экземпляр достаточно мощного класса TField, о котором мы и поговорим на этой лекции.
Изучение свойств полей будем проводить на примере приложения из прошлой лекции.
Открываем проект из лекции № 5, открываем окно модуля данных. Дважды щелкаем по компоненту FoodT, чтобы открыть New Field (Новое поле):
(рис 6.1) Создание подстановочного (Lookup) поляВ разделе (Тип поля) вы можете выбрать один из трех вариантов. Нас сейчас интересует тип FName. Перейдите на окно главной формы и убедитесь, что новое поле появилось. Однако оно пока еще не содержит данных - данные будут доступны только во время прогона программы.
Сохраните проект, скомпилируйте и посмотрите, как работает программа. Как мы видим, теперь на главной форме два поля, которые ни к чему показывать пользователю - FKey с номерами записей, и FType - с номерами типов блюд, которые нам уже не нужны, поскольку мы показываем сами типы. Уберем их, точнее, сделаем невидимыми. Снова откройте FoodT. Установите свойство
Как и подстановочное,
В нашем примере мы создадим dollar:
var fDM: TfDM; dollar: Currency = 30.36;
Вы можете указать текущий курс доллара к рублю, он так быстро меняется, что едва ли будет таким, как в моем примере. Итак, дважды щелкаем по набору данных FoodT, чтобы открыть New field ". В поле " Name " впишите название нового поля FDCena. В поле " Component " автоматически отобразится имя нового объекта-поля " FoodTFDCena ", по которому в дальнейшем мы сможем к нему обращаться. Это имя составное - имя набора данных плюс имя нового поля, без всяких пробелов и разделителей.
В поле " Type " выберите тип Float, так как у нас могут быть копейки, вернее, FDCena, и в его свойстве
Вещественные поля набора данных наряду с полями целого типа имеют четыре свойства, которые могут вам пригодиться:
Свойства
Однако, это еще полдела. Поле мы сделали, осталось сделать вычисления. Код необходимых вычислений прописывается в свойстве FoodT. Сгенерируйте для него обработчик события
FoodTFDCena.Value := FoodTFCena.Value / dollar;
Как видно из примера, мы используем значения одного или нескольких полей текущего набора данных, производим над ними какие то вычисления, и результат этих вычислений присваиваем вычисляемому полю.
Сохраните проект, скомпилируйте и посмотрите, как работает программа. Если вы все сделали правильно, у вас получится подобная картина:
(рис 6.2) Подстановочное и вычисляемое поле в программеЕсли вы помните, при создании нового поля мы имеем три переключателя . Переключатель " Data " предназначен для создания поля данных - пустого поля, которое программист использует по своему усмотрению. Наполнение этого столбца можно прописать в обработчике события
Свойство FVeget. Откройте FoodT, выделите поле FVeget. В его свойстве
Да;Нет Муж;Жен Yes;No Y;N Д;Н
и т.п. Указанные в свойстве значения пары "Истина;Ложь" будут отображаться в компонентах вывода данных, таких как DBGrid, DBEdit и т.п. Кроме того, эти же значения будут отображены, если вы будете получать значения этого поля с использованием свойства AsString, чтобы преобразовать значение в строковый тип.
Для облегчения пользователю ввода данных немного изменим проект. Откройте окно fEditor и удалите DBEdit, предназначенный для ввода логического значения в поле FVeget. Вместо него установите компонент DBComboBox. Дважды щелкните по свойству Items этого компонента и в открывшемся редакторе значений впишите две строки:
Да Нет
В свойстве DataSource компонента выберите таблицу FoodT, а в свойстве DataField - поле FVeget. Сохраните проект, скомпилируйте и посмотрите, как он работает. Теперь пользователю не нужно вписывать значение - он может выбрать его из списка.
Для полей других типов свойство Delphi ". Например, для поля
dddd dd mmm yyyy
выведет дату в формате "Понедельник 04 Янв 2010"
variant.Пример:
DBText1.Field.AsString := 'Santa Cruz Wharf';
Delphi.
К значению поля можно обратиться через свойства
Edit1.Text := FoodTFName.Value; Edit1.Text := FoodTFName.AsString;
Применение свойства
Если вы не вызывали
FoodT.FieldByName('FName').AsString := Edit1.Text;
Кроме того, доступ к значению поля можно получить через свойства набора данных Fields или FieldValues:
FoodT.Fields[1].AsString := Edit1.Text; FoodT.FieldValues['FName'] := Edit1.Text;
Как уже упоминалось, свойство FieldValues в наборах данных применяется по умолчанию, так что последний пример можно записать и так:
FoodT['FName'] := Edit1.Text;
Если для доступа к полю вы используете свойство Fields, имейте в виду, что индексация полей начинается с 0, то есть индекс 1 соответствует второму полю набора данных.
Свойство FieldValues обладает еще одной особенностью: оно имеет вариантный тип и позволяет использование списка полей, таким образом, единственным оператором можно записать сразу несколько полей:
var v : Variant; begin //создаем вариантный массив: v := VarArrayCreate([0, 2], varVariant); //читаем значения полей: v := FoodT['FName;FType;FCena']; Edit1.Text := v[0]; Edit2.Text := v[1]; Edit3.Text := v[2];
Для получения официальных документов о завершении программы дополнительного профессионального образования (удостоверения о повышении квалификации, дипломов о профессиональной переподготовке и MBA) необходимо предоставить:
Внимание! Вы можете не заказывать доставку бумажной версии официального документы, а скачать его в электронном виде и распечатать самостоятельно. Информация о выданном документе в течение 1 месяца загружается в Федеральную информационную систему «Федеральный реестр сведений о документах об образовании и (или) о квалификации, документах об обучении» - ФИС ФРДО.
Доступ на новый сайт осуществляется с использованием адреса электронной почты, который был указан вами при регистрации на "старом". Мы постарались перенести все ваши данные с прежнего ресурса, однако не исключена вероятность потери части информации.
При возникновении проблемы со входом, воспользуйтесь функцией сброса пароля
Если вы обнаружите несоответствия, пожалуйста, сообщите нам.