Наряду с ограничениями, которые задаются на уровне таблицы, можно задать ограничения на вводимые значения отдельно в приложении. Для числовых статических полей ограничения можно задать с помощью свойств: MinValue и MaxValue.
Например, для T_Kol_vo (TbTovar)можно задать:
При нарушении этих пределов возникает исключение EDatabaseError,которое необходимо обработать в приложении.
Другой способ задания ограничений через свойства статического поля:
ConstrainErrorMessage – текст, который появляется в случае неверно введенного значения.
Например, для поля T_Kol_vo можно задать:
TbPokupkaP_Kol_vo.CustomConstraint:='TbPokupkaP_Kol_vo>0 and
TbPokupkaP_Kol_vo<100)';
TbPokupkaP_Kol_vo.ConstraintErrorMessage:=' Значение вне диапазона!';
Здесь разрешен ввод для поля T_Kol_vo значений от 0 до 100. В противном случае выводится сообщение “Значение вне диапазона!” и введенное значение отвергается.
p
Проверку данных на уровне поля можно выполнить в обработчике события OnValidate, которое возникает перед записью введенного значения поля в буфер текущей записи. После этого события возникает событие OnChange,в обработчике которого можно записать обработку исключений.
Ограничения на вводимые значения для отдельных полей можно записать в виде набора ограничений в окне Editing Contraints, которое появляется при выборе свойства Constraints компонента Table.
Таблицы Paradox по умолчанию сортируются по ключам (первичный индекс). Сортировка набора данных для компонента Table выполняется автоматически по текущему индексу. При смене индекса автоматически происходит сортировка записей в соответствии с новым индексом. Для сортировки записей по нескольким полям нужно создать индекс, включающий эти поля. То есть, сортировка записей по набору данных Table возможна только по полям, для которых задан индекс.
Свойствакомпонента Table:
IndexName: String –определяет вторичный индекс таблицы. Если значение пусто, то порядок сортировки записей основывается на индексе, используемом по умолчанию. Обычно используется, если сортировка выполняется по одному полю.
Например,
TbTovar.IndexName:=’ind_tovar’;
IndexFieldNames:String – содержит список столбцов, которые используются как индексы таблицы и служат для упорядочения значений в указанных столбцах. Имена полей в списке перечисляются через точку с запятой. Для таблиц Paradox имена указываемых полей должны быть проиндексированы.
Например,
TbTovar.IndexFieldNames:='T_Nazv;T_Cena';
Здесь сортировка выполняется по названию и цене товара, индекс ind_TovarCena.
Свойства IndexName и IndexFieldNames являются взаимоисключающими, то есть определение одного свойства очищает значение другого.
IndexFieldCount: Integer –(только для чтения) указывает количество полей, которые образуют текущий индекс. Если индекс построен для одного поля, то значение равно 1.
IndexDefs: TIndexDefs;- содержит информацию об установленных для таблицы индексах.
свойство Count:Integer– указывает количество индексов;
свойство Items:Strings – содержит список индексов;
метод Update выполняет обновление определений индекса в свойстве Items.
Пример.Выполнение сортировки по индексу ind_TovarCena