我正在使用Jdev 11g进行开发。
现在的问题是:每次有新值时,我都无法更新视图条件的值。
例如,有一个查看条件VC,其中包含2个条件名称和年龄。我已经为name设置了值并执行SQL以获取结果。
现在,我需要重置视图标准并为名称或年龄设置新值。
我使用以下代码重置查看条件:
vo.removeViewCriteria(viewCriteriaName);
ViewCriteria vc= vo.getViewCriteria(viewCriteriaName);
vc.reset();
//update the view criteria
ViewCriteriaRow vcr = (ViewCriteriaRow)vc.first();
ViewCriteriaItem vci = vcRow.getCriteriaItem(attributeName);
vcItem.setOperator(SearchServiceConstants.IN);
//get the values here
vci.setValues(values);
vcr.setConjunction(vcRow.VC_CONJ_AND);
vo.applyViewCriteria(vc, true);
vo.executeQuery();
但是视图条件中仍然有一个绑定变量会影响SQL结果。
我想要的是一个干净的视图标准,其中没有任何绑定数据。
有人可以帮忙吗?谢谢!
答案 0 :(得分:0)
如果我正确理解了该问题,则您正在询问
在您的用例中,由于要传递 vo.applyViewCriteria(vc,true);
中的布尔值,因此不会删除以前的视图条件第二个参数布尔值设置为允许您保留或删除以前设置的查看条件。
请参阅:this post
将视图标准应用于此视图对象。如果bAppend为true,则视图 条件会附加到已应用的视图条件列表中。如果 bAppend为false,应用的查看条件列表在清除之前 应用传递的视图条件。参数:条件-视图 要应用的条件bAppend-指示是否应用了视图的标志 必须先清除条件列表,然后再应用视图条件。
在您的情况下,您只需要Java函数中的以下两行:
vo.applyViewCriteria(vc, false);
vo.executeQuery();
有关更多信息,请参阅文档或以下教程:https://docs.oracle.com/cd/E23943_01/apirefs.1111/e10653/oracle/jbo/ViewObject.html#applyViewCriteria(oracle.jbo.ViewCriteria,%20boolean)
答案 1 :(得分:0)
尝试一下:
vo.setApplyViewCriteriaName(null);
vo.executeQuery();
然后设置新条件并绑定变量。过去一直为我工作