КАТЕГОРИИ:
АстрономияБиологияГеографияДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРиторикаСоциологияСпортСтроительствоТехнологияФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника
|
Доступ к значениям полей по имениС помощью метода FieldByName компонента Tableвозможен доступ к полю физической таблицы по имени. Этот способ часто бывает удобнее, чем через свойство Fields, т.к. позволяет не задумываться о последовательности полей в таблице. Заголовок метода имеет вид:
function FieldByName(const FieldName: string): TField;
В параметре FieldName задается имя поля таблицы БД, к которому происходит доступ. Метод возвращает значение класса TField. Пусть таблица БД, представляемая компонентом Table1, содержит поля: F_Date (D) и F_Text (A), а переменные PDate и PText содержат введенные пользователем новые значения полей. Структура фрагмента программного кода, позволяющего внести изменения в значения полей текущей записи может быть представлена в следующем виде:
Table1.Edit; //Изменение значений полей Table1.FieldByName('F_Date').AsDateTime:=PDate; Table1.FieldByName('F_Text').AsString:=PText; if MessageDlg('Внести изменения?', mtConfirmation, [mbYes, mbNo], 0) = mrYesthen //пользователь подтверждает внесение изменений в таблицу БД Begin Table1.Post; ShowMessage('Изменения внесены!') End Else //пользователь отменяет внесение изменений в таблицу БД Begin Table1.Cancel; ShowMessage('Изменения отменены!') end;
После выполнения метода Post изменения будут внесены в текущую запись таблицы БД и «откат» (возврат предыдущих значений) будет невозможен. После выполнения метода Cancel поля текущей записи таблицы БД получат прежние значения. Для последовательного просмотра значений указанных полей таблицы можно использовать следующий фрагмент программного кода:
Table1.First; while not Table1.Eof do // Пока не дошли до конца таблицы Begin //Доступ к значениям полей текущей записи таблицы ShowMessage('Дата: '+Table1.FieldByName('F_Date').AsString+' 'Текст: '+ Table1.FieldByName('F_Text').Value); // Переход к очередной записи таблицы Table1.Next end;
Существует еще один способ программного доступа к значениям полей текущей записи: по физической таблице БД сформировать массив полей и связать его с компонентом Table1. Для этого необходимо щелкнуть дважды по компоненту Table1, нажать правую кнопку мыши и в меню выбрать пункт меню Add all fields. После этого сформируется связанный с компонентом массив полей исходной таблицы БД. Имена полей формируются по умолчанию в виде: <Имя таблицы><Имя поля>, типы полей соответствуют типам полей таблицы БД. Например, вывод значений из предыдущего примера в этом случае можно было бы записать так:
ShowMessage('Дата: '+Table1F_Date.AsString+' 'Текст: '+ Table1F_Text.Value);
В некоторых ситуациях такой способ доступа удобен, а в других просто необходим (их мы рассмотрим далее).
|