我完成了JDeveloper Cue Card"构建Fusion Web应用程序"这是非常基本的,并显示您必须更新父(ORDER)表并查看与父记录关联的子(ORDER_ITEM)行。这一切都很好,但当然在现实世界中#34;您需要更新/添加订单中的项目。自然地,在添加/更新ORDER_ITEMS表之后,您希望ORDER表中的ORDER_TOTAL值反映更改。换句话说,如果将其中一个项的数量加倍,则ORDER表中的ORDER_TOTAL值应该增加。
因此,为了扩展Cue卡,我添加了另一个页面,它允许我更新ORDER_ITEMS表中的值,它可以正常工作 - 这只是开箱即用的ADF魔法。
我试图发布我的任务流的图像,但我的声誉级别不够高。我想我必须花更长的时间才能获得更多的公会积分:)这里是一张照片的链接click here 我最初将这个问题发给了Oracle用户组,但没有得到任何答复所以我想我会尝试这个论坛。
在添加/更新ORDER_ITEM表后,我尝试了两种方法来更新ORDER表中的ORDER_TOTAL。
1)修改orderview以包含一个嵌套的select语句,该语句动态计算ORDER_TOTAL
SELECT Orders.ORDER_ID,
Orders.ORDER_DATE,
Orders.ORDER_SHIPPED_DATE,
Orders.ORDER_STATUS_CODE,
(select sum(unit_price * quantity) from order_items a
where a.order_id = Orders.order_id
group by order_id )
AS ORDER_TOTAL,
Orders.CUSTOMER_ID,
Orders.SHIP_TO_NAME,
Orders.SHIP_TO_ADDRESS_ID,
Orders.SHIP_TO_PHONE_NUMBER,
。 。 。
2)在添加/更新ORDER_ITEM表和COMMIT之后,在ORDER表中的ORDER_TOTAL值的更新中添加更新。
更新订单设置order_total = ???? order_id = ????
无论使用哪种解决方案,我都会得到相同的结果,如下所示
我更新了editOrderItem.jsff页面中的ORDER_ITEM表,任务流执行COMMIT并返回editOrder.jsff页面,ORDER_TOTAL数量不反映更改。从editOrder.jsff点击取消返回order.jsff,显示正确的ORDER_TOTAL金额。从order.jsff返回editOrder.jsff并显示ORDER_TOTAL的正确值。 看来,order.jsff里面的ADF表单中的值被缓存,页面永远不会刷新数据库的任何更新。我试图通过更改属性来刷新editOrder.jsff从刷新"真"到"假"。还改变了来自" true"的CacheResults到"假"。尝试从"无控制器操作修改任务流属性"到"始终开始新的交易"。
答案 0 :(得分:0)
在提交ORDER_ITEM修改后,您需要重新执行包含ORDER_TOTAL的查询。