568_____________________________________________Глава 10

where

Num = OLD_Num and
Dep = OLD_Dep and
Fam = OLD_Fam and
Nam = OLD Nam and
Par = OLD_Par and
Year_b = :OLD_Year_b and
Sex = OLD Sex and
Charact = :OLD_Charact and
Photo = :OLD_Photo

В нем в разделе Set указана установка всех полей в значения, задаваемые со-
ответствующими параметрами с именами, тождественными именам полей. В этот
раздел включаются те поля, которые вы выделили в окне Update Fields редактора
UpdateSQL. Заполнение этих параметров при выполнении соответствующих
команд приложения вам не потребуется: все это сделают автоматически методы
компонента UpdateSQL. В разделе Where содержатся условия, по которым иден-
тифицируется модифицируемая запись. В этих условиях используются параметры
с именами, тождественными именам полей, но с префиксом OLD_. Эти парамет-
ры — прежние значения соответствующих полей, которые были получены компо-
нентом до модификации записи. В условия Where включены те поля, которые вы
выделили в окне Key Fields редактора UpdateSQL.

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

Предупреждение ———————————————————————————————————

Если вы измените имена параметров в запросах SQL компонента UpdateSQL, вам придется
программно задавать значения этих параметров. Если же вы оставите автоматически сгене-
рированные имена, то в дальнейшем значения параметров будут автоматически загружать-
ся из объектов-полей. Так что изменять имена параметров неразумно.

Для того, чтобы запросы компонента UpdateSQL срабатывали, все объекта по-
лей, имена которых в них используются, должны быть или автоматически сгене-
рированы (т.е. без применения в компоненте Query Редактора Полей), или введе-
ны в Редакторе Полей. В противном случае при попытке выполнить запрос вам бу-
дет выдано сообщение: «Field ... is of an unknown type» (поле ... неизвестного типа)
и запрос не выполнится.

Предупреждение

В запросах компонента UpdateSQL должны фигурировать только те поля, которые введены
вами в Редакторе Полей компонента Query, или вы не должны пользоваться в Query Редак-
тором Полей.

Посмотрим на приведенный выше сгенерированный запрос ModifySQL с точки
зрения нашего приложения. Прежде всего очевидно, что из условия запроса where
надо удалить поля Charact и Photo, так как сравнение полей такого типа бессмыс-
ленно. Вообще для нашей таблицы достаточно оставить сравнение только по полю
Num, поскольку это поле обеспечивает уникальность каждой записи. Кроме того из
раздела set надо исключить поле Num, так как оно типа Autoincrement, а значения
полей этого типа устанавливать нельзя: они автоматически нарастают с каждой но-
вой записью. Таким образом, запрос ModifySQL имеет смысл оставить в виде: