首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Siebel eScript : CountRecords()方法对每个输入值返回0

Siebel eScript : CountRecords()方法对每个输入值返回0
EN

Stack Overflow用户
提问于 2016-09-30 14:29:46
回答 1查看 3.4K关注 0票数 0

我正在尝试创建一个业务服务,它将根据作为输入的状态返回记录的计数。

‘'Status’字段是一个静态选择列表字段。下面是我的Siebel eScript。

代码语言:javascript
复制
function getRecordsCount (Inputs, Outputs)
{
    var count=0;
    try
    { 
        var bo = TheApplication().GetBusObject(Inputs.GetProperty("boname"));
        var bc = bo.GetBusComp(Inputs.GetProperty("bcname"));
        var LOVText = TheApplication().InvokeMethod("LookupValue",Inputs.GetProperty("lovType"),Inputs.GetProperty("Status"));
        with (bc)
        {     

            ClearToQuery();
            SetSearchSpec("Status","\'"+LOVText+"\'");
            ExecuteQuery(ForwardOnly);
            count = CountRecords();
        }
      bc = null;
      bo = null;
    }
    catch (e)
    {
        throw (e);
    }
    finally
    {
        Outputs.SetProperty("Count",count);
    }
}
EN

回答 1

Stack Overflow用户

发布于 2016-10-04 11:52:45

根据您的选择列表是如何构建的,您可能需要使用此规范:

代码语言:javascript
复制
bc.SetSearchSpec("Status", "='" + status + "'");

这也可能是一个可见性问题。运行代码的用户可能对这210条记录没有可见性。您可以使用以下方法来解决这个问题:

代码语言:javascript
复制
bc.SetViewMode(AllView);

如果您想确定发生了什么,您可以在您的专用厚客户端中启用SQL线轴跟踪并检查它正在执行的实际查询.或者,您可以转到任何服务请求applet,并使用语法[Status] = 'Active'[Status] = 'ActiveLovText'查询自己(无论返回什么LookupValue都替换ActiveLovText )。

此外,您还可以在代码中改进以下几点:

  • 在这种情况下,没有必要转义您的单引号。"'"很好。
  • 如果你抓住一个异常,然后再抛出它,你就什么也不做了。你只要去掉那些线就行了。
  • 您正在将count值存储在PropertySet中的finally块中,甚至在变量初始化之前就可以达到该值。要么用初始值声明它,要么将SetProperty行放在其他地方。
  • 另一方面,您应该使用finally块来清除已使用的对象,例如bcbo。您可以在try块中这样做,这意味着如果有异常,就不会执行。在这种情况下,这并不重要,但它总是很好的练习。

考虑到所有这些,代码应该是这样的:

代码语言:javascript
复制
function ReturnStatusCount (Inputs, Outputs)
{
    var bo:BusObject;  // Remove the ":BusObject" and ":BusComp" parts if
    var bc:BusComp;    // they give you any trouble
    try {
        var status = Inputs.GetProperty("Status");
        var lovText = TheApplication().InvokeMethod("LookupValue", Inputs.GetProperty("lovType"), status);
        bo = TheApplication().GetBusObject(Inputs.GetProperty("boname"));
        bc = bo.GetBusComp(Inputs.GetProperty("bcname"));
        bc.ClearToQuery();
        bc.SetViewMode(AllView);
        bc.SetSearchSpec("Status", "='" + status + "'");  // status, or lovText maybe
        bc.ExecuteQuery(ForwardOnly);
        Outputs.SetProperty("Count", bc.CountRecords());
    } finally {
        bc = null;
        bo = null;
    }
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39793917

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档