首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在BQL中执行TSQL CHARINDEX或TSQL IN?

如何在BQL中执行TSQL CHARINDEX或TSQL IN?
EN

Stack Overflow用户
提问于 2015-05-19 23:38:53
回答 3查看 181关注 0票数 1

我正在尝试确定字段值的前两个字符是否与有限列表中的一个匹配,即("RG","HC","LP“等)这些值中可能有5-10个。我不关心它是哪一个,只关心它是“有效的”。

在SQL中,我可以使用CHARINDEX或In -我如何使用BQL来完成此操作?

我也许可以做一个切换/案例,但这样把它们都写出来似乎效率很低。

具体地说,我试图在字段的DBCalced属性中做到这一点:

代码语言:javascript
复制
[PXDBCalced(typeof(Switch<Case<Where<Substring<INItemLotSerial.lotSerialNbr,int1, int2>, In<EDType>>, Substring<INItemLotSerial.lotSerialNbr,int1, int2>>, StringEmpty>), typeof(string))]

上面的代码似乎没有达到我的预期--我不知道它是用来做什么的,也不知道如何使用IN<>,因为我没有找到文档。我将EDType定义为一个常量字符串,所有值都用逗号分隔。

谢谢

EN

回答 3

Stack Overflow用户

发布于 2015-05-21 21:57:10

我的建议是处理FieldUpdated事件,而不是通过纯BQL语句。您可以从图形中执行此操作,也可以创建将应用于字段的自定义属性。有几种不同的方法可以创建此自定义属性,但最简单的定义如下所示:

代码语言:javascript
复制
private sealed class MyCustomBehaviourAttribute : PXEventSubscriberAttribute, IPXFieldUpdatedSubscriber
{
    public void FieldUpdated(PXCache sender, PXFieldUpdatedEventArgs e)
    {
        // Add your logic here
    }
}

您还可以在源代码内部进行搜索(使用屏幕SM.20.45.70上的在文件中查找功能),并搜索实现IPXFieldUpdatedSubscriber或调用FieldUpdated.AddHandler手动订阅事件的属性。

票数 1
EN

Stack Overflow用户

发布于 2015-05-26 22:35:07

我无法将其放入评论中,但我使用了以下属性:

代码语言:javascript
复制
     [PXDBCalced(typeof(Switch<Case<Where<Substring<INItemLotSerial.lotSerialNbr, int1, int2>, Equal<EDRG>,
                                Or<Substring<INItemLotSerial.lotSerialNbr, int1, int2>, Equal<EDAP>,
                                Or<Substring<INItemLotSerial.lotSerialNbr, int1, int2>, Equal<EDHC>,
                                Or<Substring<INItemLotSerial.lotSerialNbr, int1, int2>, Equal<EDRN>,
                                Or<Substring<INItemLotSerial.lotSerialNbr, int1, int2>, Equal<EDPP>,
                                Or<Substring<INItemLotSerial.lotSerialNbr, int1, int2>, Equal<EDPT>
                                >>>>>
                                >, Substring<INItemLotSerial.lotSerialNbr, int1, int2>>, StringEmpty>), typeof(string))]

其中EDRG等是常量。

就像我说的,不是最漂亮的,但看起来很有效。

票数 1
EN

Stack Overflow用户

发布于 2015-05-22 19:11:32

In<T>不应该与参数(例如Required<T>Optional<T>)一起使用,因为它接受向量或值作为其第二个操作数,这现在只能通过传递一个匹配参数的数组来实现。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30330154

复制
相关文章

相似问题

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