КАТЕГОРИИ: Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748) |
Работа с полями наборов данных
Поле набора данных представляет собой столбец таблицы. В среде Delphi предусмотрен специальный объект Field для работы с полями. Данный объект имеет тип TField. Наследниками этого объекта являются TIntegerField, TFloatField и т. д. Для того чтобы программист мог работать с отдельными полями набора данных, в Delphi определены специальные методы и свойства, которые мы и рассмотрим. Свойство FieldCount имеет тип Integer и содержит число полей данного набора данных. Свойство доступно только для чтения. Приведем пример чтения значения свойства FieldCount: a:=Table1.FieldCount; // a – переменная типа Integer ВНИМАНИЕ. Количество полей набора данных может не быть равным числу полей физической таблицы базы данных, так как в набор данных могут быть не включены некоторые поля таблицы. Свойство Fields имеет тип TFields и хранит список всех несоставных полей набора данных. Его можно представить себе в виде массива, который содержит поля набора данных, каждое под своим номером (индексом). Вы можете обращаться к конкретному полю набора данных при помощи указания его индекса (Index). Нумерация индексов начинается с нуля и заканчивается значением FieldCount-1. Если приложению известен тип данных конкретного поля, то его значение можно прочитать с помощью свойства Fields: Edit1.Text:=Table1.Fields.Fields[1].AsString; Кроме того, допускается запись значения в нужное поле набора данных: Table1.Edit; // Переводим набор данных в режим редактирования Table1.Fields.Fields[1].AsString:=Edit1.Text; Table1.Post; // Записываем данные в таблицуВы, вероятно, обратили внимание на то, что при вставке в поле значения мы применили такое свойство объекта Field, как AsString. Данное свойство позволяет обращаться к содержимому поля как к строковому значению. Кроме рассмотренного свойства, имеются еще несколько: AsInteger — обращение как к целой величине, AsFloat — как к вещественной, AsVariant — как к вариантной, AsCurrency — как к денежной, AsDateTime — как к «дате-времени» и AsBoolean — обращение как к логическому (булевому) значению. ВНИМАНИЕ. При доступе к полю набора данных нужно всегда четко представлять, какого оно типа. Так как, например, если вы обращаетесь к строковому полю с использованием свойства AsFloat, возникнет исключительная ситуация. Обращение к полям по их номеру не всегда эффективно, поскольку номер поля — величина не постоянная. Номера полей зависят от многих факторов: от порядка полей в физической таблице базы данных, от состава полей набора данных в настоящий момент времени, от значений свойств визуальных компонентов. Поэтому доступ к полю по его номеру чреват ошибками. На практике для доступа к полям разработчики чаще всего используют методы FindField и FieldByName. Метод FindField (const FieldName: string): TField; обнаруживает поле по его имени. Если такое поле найдено, то метод возвращает объект типа TField, то есть поле, соответствующее параметру FieldName. В случае отрицательного результата возвращается значение nil. Данный метод похож на рассматриваемый далее метод FieldByName за исключением того, что он возвращает значение nil в случае, когда поле не найдено, а метод FieldByName генерирует исключительную ситуацию. ВНИМАНИЕ. Параметр FieldName указывает имя поля физической таблицы базы данных, которое было задано при первичном проектировании таблицы. Метод FieldByName(const FieldName: string): TField; также ищет поле по его имени. В случае успешного поиска возвращается поле, соответствующее параметру FieldName. В противном случае генерируется исключительная ситуация EDatabaseError. Вы можете выбрать как первый, так и второй метод для работы с полями — это дело вкуса. Рассмотрим пример кода, в котором заменим значение поля с помощью вызова метода FindField: Table1.Edit; // Переводим набор данных в режим редактирования Table1.FindField(‘Number’).AsInteger:=10; Table1.FindField(‘Name’).AsString:=’Вячеслав’; Table1.FindField(‘Surname’).AsString:=’Понамарев’; Table1.Post; // Записываем данные в таблицуМы уже немного научились использовать объект поля Field. Теперь остановимся на нем более подробно. Как уже было сказано ранее, объект Field имеет тип TField, который является абстрактным классом. Поэтому вместо него применяются классы-наследники, перечисленные в табл. 3.2. Таблица 3.2. Наследники класса TField
В дальнейшем мы будем применять термин TField для обозначения любого из объектов, перечисленных в табл. 3.1. Для того чтобы проверить, какой тип имеет конкретное поле таблицы, используйте свойство DataType типа TFieldType. Оно может принимать значения, представленные в табл. 3.3. Таблица 3.3. Значения свойства DataType
Теперь мы можем перейти к рассмотрению особенностей наборов данных Table и Query.
Дата добавления: 2014-01-15; Просмотров: 1043; Нарушение авторских прав?; Мы поможем в написании вашей работы! Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет |