Анимация
JavaScript


Главная  Библионтека 

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 [ 50 ] 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146

Table Designer

Jable Name: I customer

Database:

I c:\proect book\aLito :tore dbc

Table Properties...

Table

Name

Tijpe

Index

Width DecimalNULL

keiJ customer name customer

Integer Character-

address

last name first name

I Character Character-Character

Character-Character

"зга

Cancel

12 12 17 17

Insert

Delete

pField Properties ( address ) Validation Rule:

Validation Text: Default Value: "С-Петербург" Caption: [Адрес

iield Comment:

c:\proiect book\customer.dbf

Records:

5 Fields: 10 Length: 145

Рис. 6.3. Задание значения по умолчанию в Конструкторе таблиц

Предположим, в силу географического положения магазина чаще всего адрес клиентов данного магазина начинается с фразы "Санкт-Петербург". В следующем примере создается поле address со значением по умолчанию "Санкт-Петербург":

CREATE TABLE Customer (key customer I, name customer C(30), ; address C(30) DEFAULT "Санкт-Петербург", ; tel C(12), fax C(12), last name C(17), first name C(17),; patronymic C(17), juridical L, comment M)

Если таблица Customer уже имеет поле address, то добавить для него значение по умолчанию можно следующей командой:

ALTER TABLE Customer ALTER COLUMN address SET DEFAULT ; "Санкт-Петербург"

Значения по умолчанию могут использоваться для ускорения ввода данных, позволяя пропускать при вводе поля, для которых не требуется значение, отличное от стандартного.

Если по бизнес-правилам в приложении требуется обязательное наличие значения некоторого поля, то задание значения по умолчанию помогает избежать нарушения соответствующих правил проверки полей и записей.

При удалении таблицы из базы данных удаляются и все связанные с таблицей значения по умолчанию. Хранимые процедуры, на которые ссылались удаляемые значения по умолчанию, сохраняются и после удаления значений по умолчанию.

В качестве значений по умолчанию можно задавать как явные значения в виде чисел, строк символов, дат и т. д., так и выражения, дающие явные значения в результате вычислений. В

Значения по умолчанию применяются как при вводе данных с помощью формы, так и при вводе в окно просмотра с помощью представлений или программно и сохраняются в поле, пока не будут введены другие значения.

Значения по умолчанию могут быть заданы в Конструкторе таблиц или программно. Значения по умолчанию могут быть заданы для полей любого типа, кроме General.

Для того чтобы задать значение по умолчанию для поля таблицы, включенной в базу данных, в Конструкторе таблиц введите значение в поле Default Value, находящееся в группе Field Properties (рис. 6.3), или используйте выражение DEFAULT в команде CREATE TABLE.



Правила проверки полей и записей контролируют вводимые значения на выполнение заданного критерия. Если вводимое значение не удовлетворяет критерию, оно отвергается.

Правила проверки могут задаваться только для таблиц, связанных с базой данных.

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

Для контроля вводимых данных можно также определить первичные индексы и индексы-кандидаты, которые предотвращают ввод дублирующих значений полей, а также можно определить триггеры, обеспечивающие целостность ссылок или выполняющие какие-либо действия при изменении данных в базе данных.

Ограничения на уровне поля применяются в тех случаях, когда требуется проверять вводимую в поле информацию независимо от остальной части записи. Например, можно использовать правило проверки поля, чтобы исключить возможность ввода отрицательного числа в поле, которое должно иметь положительное значение. Можно использовать правила проверки поля и для сравнения вводимого в поле значения со значением из другой таблицы.

Не следует задавать такие правила проверки полей и записей, если эти поля и записи являются специфическими для данного приложения. Правила проверки записей и полей должны обеспечивать целостность данных и бизнес-правила, которые всегда применимы к базе данных независимо от приложения. Например, можно задать правило, которое будет сравнивать значение, вводимое в поле key body, со значениями из справочной таблицы кузовов, и отвергать те значения, которые не обнаружатся среди допустимых кодов кузовов.

Как задать правило проверки поля? В Конструкторе таблиц введите выражение критерия в поле ввода Validation Rule в группе Field Properties (рис.6.4) или используйте выражение CHECK в

команде CREATE TABLE или ALTER TABLE.

качестве такого выражения можно использовать и пользовательскую функцию. В этом случае такую функцию целесообразно записать в хранимых процедурах.

Visual FoxPro производит вычисления для определения типов данных при закрытии определения таблицы. Если тип вычисленного значения несовместим с типом соответствующего поля, то генерируется сообщение об ошибке. Если выражение представляет собой определенную пользователем функцию или содержит вызовы таких функций, то такое выражение не вычисляется.

Для того чтобы обеспечить соблюдение бизнес-правил при вводе данных, можно задать правила проверки полей и записей, которые контролируют допустимость вводимых данных в таблицу базы данных.



Table Designer

Jable Name: I model

Database:

I c:\proect book\aLito store dbc

Table Properties..

Table

Name

TiJpe

Index

Width DecimalNULL

keiJ model name mode! keiJ firm swept volume

Cancel

quantitiJ drunf1

capacitiJ torgue

Integer 4

Character 20

Integer 4

Numeric- Э V

Numeric 3 0

Numeric. 5 } V

Numeric 5 1 т Delete

Insert

pField Properties ( quantiti) drum ]

Validation R ule: quantitiii drum=> 1

Validation Text: ["Количество цилнидро

Default Value:

Caption: I Кол-во цилиндров

iield Comment:

c:\project book\model.dbf

Records: 37 Fields: 20 Length:

Рис. 6.4. Задание правил проверки и сообщения об ошибке в Конструкторе таблиц

Следующий программный код вводит для таблицы Model правило проверки, требующее, чтобы значения, вводимые в поле quantity drum, были не меньше единицы:

ALTER TABLE Model ;

ALTER COLUMN quantity drum SET CHECK quantity drum >> =

Если пользователь попытается ввести меньшее значение, Visual FoxPro выведет диалоговое окно, содержащее сообщение об ошибке, и значение будет отвергнуто.

Сообщение, которое выводится при нарушении правил, может быть задано при определении поля. Заданное сообщение будет выводиться вместо стандартного сообщения об ошибке в соответствующем диалоговом окне.

Для задания сообщения о нарушении правил проверки полей в Конструкторе таблиц введите сообщение в поле ввода Validation Text в группе Field Properties (рис.6.4) или используйте необязательный параметр ERROR в выражении CHECK в команде CREATE TABLE или ALTER TABLE.

Следующий фрагмент программы вводит для таблицы Model правило проверки, требующее, чтобы значения, вводимые в поле quantity drum, были не меньше единицы, а также определяет сообщение об ошибке:

ALTER TABLE Model ;

ALTER COLUMN quantity drum SET CHECK quantity drum >>= 1 ; ERROR "Количество цилиндров должно быть больше или равно 1"

Если пользователь попытается ввести значение меньше 1, Visual FoxPro выведет диалоговое окно с заданным сообщением об ошибке и неверное значение будет отвергнуто (рис. 6.5). Чтобы задать собственное сообщение об ошибке, можно использовать и выражение SET CHECK в команде ALTER TABLE с необязательным параметром ERROR.



0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 [ 50 ] 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146