Упражнение 5.3: Тестирование обработчика заполнения на сервере
Задание 3
Протестируем созданный обработчик событий добавив новый код в процедуру access_dsPO_procs.p, которую мы создали на прошлых практических занятиях.
Шаг |
Действие |
1 | Откройте в OpenEdge Editor файл процедуры access_dsPO_procs.p. |
2 | Добавьте следующий комментарий в конец процедуры, перед блоком очистки.
/*------------------------------------------------------ Практическое занятия 5.1 Тестирование события набора данных AFTER-FILL ------------------------------------------------------*/ |
3 | Очистите набора данных dsPO и запросите с сервера данные для таблиц ttPurchaseOrder и ttPOLine, у которых поле PONum меньше, чем 8005:
DATASET dsPO:EMPTY-DATASET (). RUN get_dsPO IN hProc ("PONum < 8005", "", OUTPUT DATASET dsPO). |
4 | Откройте вывод в файл C:\OpenEdge\WRK\ProDataSets\log\AfterFillHandler_dsPO.txt
OUTPUT TO "C:\OpenEdge\WRK\ProDataSets\log\AfterFillHandler_dsPO.txt". MESSAGE "**** Обработчик AFTER-FILL не используется ****". |
5 | Добавьте следующей код для перебора таблиц ttPurchaseOrder и ttPOLine с выводом их содержимого в файл.
FOR EACH ttPurchaseOrder NO-LOCK: DISPLAY ttPurchaseOrder.PONum ttPurchaseOrder.DateEntered ttPurchaseOrder.SupplierIDNum ttPurchaseOrder.ReceiveDate ttPurchaseOrder.POTotal WITH 1 COLUMN STREAM-IO. FOR EACH ttPOLine OF ttPurchaseOrder NO-LOCK: DISPLAY ttPOLine.PONum ttPOLine.LineNum ttPOLine.ItemNum ttPOLine.Price ttPOLine.Qty ttPOLine.Discount ttPOLine.ExtendedPrice WITH WIDTH 150 STREAM-IO. END. END. |
6 | Теперь вызовем процедуру на сервере, которая использует обработчик событий, но сначала очистим набор данных.
DATASET dsPO:EMPTY-DATASET (). |
7 | Вызовем процедуру get_dsPO2 с сервера с теми же условиями, которые использовали при вызове оригинальной get_dsPO.
MESSAGE "**** Используется обработчик AFTER-FILL ****". RUN get_dsPO2 IN hProc ("PONum < 8005", "", OUTPUT DATASET dsPO). |
8 | Повторите код для перебора таблиц ttPurchaseOrder и ttPOLine:
FOR EACH ttPurchaseOrder NO-LOCK: DISPLAY ttPurchaseOrder.PONum ttPurchaseOrder.DateEntered ttPurchaseOrder.SupplierIDNum ttPurchaseOrder.ReceiveDate ttPurchaseOrder.POTotal WITH 1 COLUMN STREAM-IO. FOR EACH ttPOLine OF ttPurchaseOrder NO-LOCK: DISPLAY ttPOLine.PONum ttPOLine.LineNum ttPOLine.ItemNum ttPOLine.Price ttPOLine.Qty ttPOLine.Discount ttPOLine.ExtendedPrice WITH WIDTH 150 STREAM-IO. END. END. |
9 | Закройте вывод в файл.
OUTPUT CLOSE. |
10 | Сохраните файл и убедитесь в отсутствии ошибок компиляции. |
11 | Поскольку серверный код был изменён, выполните рестарт сервера приложений ProDataSets. |
12 | Выполните процедуру access_dsPO_procs.p. Проверьте файл и сравните данные первого и второго вариантов вывода в файл.
Произошла ли корректировка цен с учётом скидки в 20%? Обратите внимание, что обработчик событий AFTER-FILL не обновляет базу данных, а только данных в наборе. |