ITPUB论坛 » CRM产品与实践 » 一个关于Siebel Order Entry - Line Items BC查询的问题
新一届的微软MVP评选已经开始,欢迎各位推荐!
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论坛