Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Плещёв ВУМИП 2012-07-06.doc
Скачиваний:
66
Добавлен:
13.05.2015
Размер:
9.35 Mб
Скачать

3.4.2. Источник данных (DataSource)

Компонент устанавливает связь между таблицами и физическими наборами и объектами (свойствоDataSource) на форме (п. 3.3).

Основные свойства

DataSet‑ имя таблицы, с которой устанавливается связь.

State‑ текущее состояние (статуса) связанной таблицы (типTDataSetState).

Метод IsLinkedTo(D:TDataSet)возвращает истину, если источник связан с наборомD.

Основные события

OnDataChange,OnStateChange‑ редактирование записи, меняется статус.

OnUpdateData‑ перед сохранением изменений методомPost.

3.4.3. Описание и доступ к полям записи базы данных

Основные свойства физического поля записи (TFieldDef)

DataType, FieldNo, Precision‑ тип, номер поля, число цифр в поле.

InternalCalcField,Require‑ вычисляемое псевдополе, обязательное (True).

Основные свойства виртуального поля записи (TField)

Calculated, CanModify, IsIndexFileld, IsNull, ReadOnly, Required‑ вы­числяемое, редактируемое, индексное, не заполненное, не редакти­руе­мое, обязательно заполняемое поле соответственно.

ConstrainErrorMessage, DisplayLabel‑ строка, выводимая при вводе неверного значения, словесное название поля, выводимое на дисплей.

DataSize, DataType, EditMask‑ размер, тип, маска ввода значения поля.

FildKind‑ вид поля:fkData(данные),fkCalculated(вычисляемое),fkLookup(поле соответствия),fkInternalCalc(вычисляемое значения заносится в базу),fkAggregate(составное).

FieldName,FieldNo,Text,Value‑ физическое имя, номер поля в записи, текстовое значение поля, значение поля типаVariantсоответственно.

Основные методы виртуального поля записи

Clear‑ очистить поле (сделать пустым).

FocusControl‑ перемещение фокуса на значение поля.

IsValidChar(С:Char):Boolean‑ символCдопустим для поля (True).

Доступ к полюреализуется свойствомFields[<номер поля>] и методами таблицыFieldByName(‘<имя поля>’),FindField(‘<имя поля>’).

Доступ к значению поля реализуется свойствами полейValueиAs<тип> и свойством таблицыFieldValues:

Value‑ представляет значение поля. При доступе к физическому полю преобразование к типу результата выполняется автоматически, если это возможно, в отличие от постоянного поля ‑ пользователь обязан указать тип результата, равный типу поля.

Примерыдоступа к динамическим и постоянным полям таблицы:

Label1.Caption:=Datamodule2.Stroiki.FieldByName('Ns').Value;//значение Ns

Label1.Caption:=Datamodule2.Stroiki.FindField('Ns').Value; //значение Ns

Label1.Caption:=Datamodule2.StroikiNs.Value; //постоянное поле StroikiNs

Label1.Caption:=Datamodule2.StroikiKz.Value;//ошибка:Кz‑число(не строка)

As<тип> ‑ представляется значение поля с преобразованием этого значе­ния к указанному типу: Variant, String, Integer (Longint), Float (Double), Currency, Boolean, DateTime.

Примеры:

Label1.Caption:=Datamodule2.StroikiKz.AsString; //Kz переводится в строку

Datamodule2.Stroiki.Fields[0].AsString:=Edit1.Text; //название стройки

DataModule2.Stroiki.FindField(‘Ss’).AsCurrency:=100000;//смета стройки

FieldValues[‘<имя поля>’]‑ доступ к значению поля под указанным именем

Пример:DataModule2.Zakazhiki.FieldValues['Nz']:='Уралмаш';//заказ.

Запретить корректировкуили скрытьполеможно свойствамиReadOnly,Visisble(Datamodule2.Stroiki.FieldByName('Ns').Visisble:=True).

Проверка типа поляреализуется свойством поляDataTypeтипаTFieldType:ftString,ftSmallint,ftInteger,ftWord,ftBoolean,ftFloat,ftCurrency,ftDate,ftTime,ftDateTime,ftBytes,ftAutoInc,ftBlod,ftGraphicи др.

Контроль значения поляреализуется свойствами поля:MinValue(минимум),MaxValue(максимум),CustomConstraint(текст условия),ConstraintErrorMessage(текст сообщения об ошибке).

Пример:

WithDatamodule2.StroikiBegin...//присоединение имени модуля и таблицы

FieldByName('Kz').CustomConstraint:='Kz>=0 and Kz<=9'; //условие

FieldByName('Kz').ConstraintErrorMessage:='Ошибка'; //текст сообщения

FieldByName('Kz').DefaultExpression:='0'; //значение по умолчанию

Для более сложного контроля можно использовать обработчики событий для поля в порядке их генерации:OnSetText(генерируется только при вводе до изменения значения поля),OnValidate,OnChange. Последние два события генерируются после окончания ввода или присвоения значения программным путем. В обработчикеOnSetTextвторой аргумент содержит новое значение, которое можно проверить, и если оно правильное, то присвоить это значение полю.

Примеробработчика событияOnValidateдля поляKz:

Procedure TDataModule2.StroikiKzValidate(Sender: TField);

Begin If Datamodule2.Stroiki.FieldByName('Kz').Value >10 Then Begin

ShowMessage('Ошибка! Код заказчика вне диапазона [1,10]');

Datamodule2.Stroiki.Cancel; End Else Datamodule2.Stroiki.Post; End;