среда, 2 октября 2013 г.

Процедура обработки события на текущую запись формы

Рассмотрим следующую базу данных турбюро.
Необходимо создать форму для ввода информации о путевках и увеличивать стоимость путевки на 20%, если признак оплаты - безналичный.


Форма "Маршруты" может быть произвольной, форма "Путевки" должна выглядеть именно так, как показано на рис. ниже, иначе обновление будет происходить не по одной записи, а по всем сразу.
Итак, нам необходим автоматический пересчет стоимости в зависимости от выбранного признака оплаты. Если признак оплаты "Наличный"  - не делаем ничего, если "Безналичный" - число в поле Стоимость увеличиваем на 20%.
Реализуем сие.
Открываем форму "Путевки" в режиме конструктора. Выбираем в окне свойств Форма, Текущая запись и Программа.

Нам необходимо написать такой скрипт, который бы пересчитывал Стоимость в зависимости от формы оплаты. У меня еще + подсвечивается разными цветами для проверки, что условие проверяется.

Если Признак_оплаты «Безналичный», устанавливаю цвет и пересчитываю поле Стоимость, иначе, просто выкрашиваю в другой цвет.
Изменения вступают в силу, только после того, как перейти на другую запись. Но их можно посмотреть, вернувшись на предыдущую. Минус данной реализации в том, что пересчет происходит постоянно при переходе по записям. В самой задаче на этот счет ничего сказано не было. Так что «Горшочек, не вари!» - не поможет, пересчитывает всегда, когда есть «Безналичный».

Другой реализацией могло бы быть такое решение: добавлять дополнительный столбец и хранить в нем пересчитанные суммы. С практической точки зрения - это и есть тот самый верный результат, с ученической - сделали, как придумали =)


Комментариев нет:

Отправить комментарий