Упражнение 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.