
2008-4-27 14:19
speeder1984
一个关于Siebel Order Entry - Line Items BC查询的问题
[size=4][color=red]在Order Entry - Line Items BC中遇到一个比较奇怪的问题,
当我执行如下查询的时候:
[/color][/size]with(BC_OrderItem_Name)
{
ClearToQuery();
ActivateField("Line Number");
SetSearchSpec("Order Header Id",Gap_Order_Id);
ActivateField("WH Product Num");
SetSortSpec("Line Number");
ExecuteQuery(ForwardBackward);
var Has_OrderItem_Record = FirstRecord();
}
while(Has_OrderItem_Record)
{
BC_OrderItem_Name.ActivateField("Line Number");
var test = BC_OrderItem_Name.GetFieldValue("Line Number");
Ship_quantity = BC_OrderItem_Name.GetFieldValue("Quantity Requested");
BC_OrderItem_Name.SetFieldValue("Quantity Requested",Ship_quantity - A_old_item_info[i] );
BC_OrderItem_Name.SetFieldValue("WH Product Num",0);
BC_OrderItem_Name.SetFieldValue("Line Number",t);//重编订单号
BC_OrderItem_Name.WriteRecord();
t = t+1;
Has_OrderItem_Record = BC_OrderItem_Name.NextRecord();
}
[size=5][color=red][b]发现系统有时不会遍历所以订单行,而是其中的某些订单行,这种情况还将发生在你更新过的行里,也就是说你更新了一行,那么查询也不会检索到该记录。[/b][/color][/size][/i]
[b][i][size=5][color=#ff0000] 我百思不得其解,望各位高手指点下。[/color][/size][/i][/b]
[b][i][size=5][color=#ff0000] 谢谢![/color][/size][/i][/b]
2008-4-28 15:01
gumin
大致看了下,好像第一对大括号扩的有问题,具体语法很久没写,也没tools,没法check.
2008-5-4 23:17
young_smile
这种问题不好直接判断,不知道是不是这个问题:
bc层上有个viewmode的属性,是可以按照组织等值做数据展现限制的。所以一般在执行查询的时候可以调用setviewmode(3),这样是在该bc上的所有数据做查询。
如果方法还不能排除,那你只能在本地用模拟器调用此代码,抓取sql语句然后放在plsql中运行做进一步跟踪。
[[i] 本帖最后由 young_smile 于 2008-5-6 23:35 编辑 [/i]]
2008-5-7 11:28
zhouxiaolong810
同意。在设置查询条件前加[b]SetViewMode(AllView);[/b]试一下。很可能是Visibility造成的问题。
2008-5-7 11:57
gumin
刚check 了一下tools,这个BC没有View Mode, 但是user Property 比较多,看了下有个Pre-defined Search, 查了下帮助,也没找个,不知道是干什么的。
2008-5-7 21:58
young_smile
从代码上看实在看不出什么问题,你可以在while中什么都不做,只是做循环计数,看有多少条数据。看看和你想要的数据是否一致,如果还不正确,那么真的是用dedicated client运行抓取sql语句出来看看,到底是什么条件导致查询的结果不正确。
2008-5-23 10:53
m4_killer
大括号写的有问题,执行结果肯定不对,第2个WHILE整个程序块应该包含在第一个大括号里面,而不是外面
2008-5-26 10:34
speeder1984
不对吧?
楼上说得不对吧?我怎么没有见到第二个While呢?
2008-5-27 15:16
lucier2008
SetSortSpec("Line Number");
我看了一下,可能和你的SetSortSpec相关,你在Query中设置了SortSpec,但你遍历记录时,又改变了Line Number的值,可能造成记录的顺序发生变化。你可以再试一下。
2008-6-12 21:48
dianxer
可能是楼上说的原因
看了下楼主的代码,主要目的是重排line item的sequence
记得Order Entry - Line Items有一个特殊的方法叫做*sequence*的,完全可以实现你的需求,不需要写这么多代码
2008-7-3 10:24
alexxiao
也许是ActivateField("Line Number")的问题
也许是ActivateField("Line Number")的问题。 代码中重复了ActivateField("Line Number")。建议把while中的"BC_OrderItem_Name.ActivateField("Line Number");"去掉试试。
页:
[1]

Powered by ITPUB论坛