Упражнение 2.8: Частичное заполнение набора данных
В этом задании мы добавим код для частичного заполнения набора данных dsPO в ту же самую процедуру, на которой работали на прошлом задании. Мы также используем один и тот же набор данных, поэтому первое, что мы должны сделать, это очистить набор dsPO. Поэтому добавьте следующий оператор перед оператором RETURN.
DATASET dsPO:EMPTY-DATASET().
Далее добавьте оператор OUTPUT для вывода содержимого набора данных в файл C:\OpenEdge\WRK\ProDataSets\log\SomeDsPO.txt.
Измените путь к файлу если необходимо.
OUTPUT TO "C:\OpenEdge\WRK\ProDataSets\log\SomeDsPO.txt".
Вставьте следующий код из предыдущей части этой процедуры в конец процедуры.
BUFFER ttPurchaseOrder:ATTACH-DATA-SOURCE(DATA-SOURCE srcPurchaseOrder:HANDLE).
BUFFER ttPOLine:ATTACH-DATA-SOURCE(DATA-SOURCE srcPOLine:HANDLE).
QUERY qPurchaseOrder:QUERY-PREPARE("FOR EACH PurchaseOrder").
DATASET dsPO:FILL().
FOR EACH ttPurchaseOrder:
DISPLAY
ttPurchaseOrder.PONum
ttPurchaseOrder.DateEntered
ttPurchaseOrder.SupplierIDNum
ttPurchaseOrder.ReceiveDate
WITH 1 COLUMN STREAM-IO
.
FOR EACH ttPOLine OF ttPurchaseOrder:
DISPLAY
ttPOLine.PONum
ttPOLine.LineNum
ttPOLine.ItemNum
ttPOLine.Price
ttPOLine.Qty
ttPOLine.Discount
ttPOLine.ExtendedPrice WITH WIDTH 150 STREAM-IO
.
END.
END.
OUTPUT CLOSE.
BUFFER ttPurchaseOrder:DETACH-DATA-SOURCE().
BUFFER ttPOLine:DETACH-DATA-SOURCE().
Измените запрос в операторе QYEURY-PREPARE так, чтобы в набор данных попала только часть записей из таблицы PurchaseOrder со значением поля PONum меньше 9000.
QUERY qPurchaseOrder:QUERY-PREPARE("FOR EACH PurchaseOrder WHERE PONum < 9000").
Сохраните файл и убедитесь в отсутствии ошибок компиляции.
Выполните процедуру:
а. Проверьте, что программа access_dsPO.p выбрана в OpenEdge Editor.
б. Для открытия списка вариантов выполнения программы щёлкните по иконке:![]()
в. Выберите Run As -> Progress OpenEdge Application.
Проверьте содержимое файл журнала C:\OpenEdge\WRK\ProDataSets\log\SomeDsPO.txt. Он должен содержать все записи PurchaseOrder и связанные с ними записи POLine, у которых номера заказов меньше 9000.
