在Acumatica中将SQL转换为BQL

时间:2017-04-10 06:47:53

标签: acumatica

我想从 SQL

翻译
select * from table where table.field in('A','B') 

到Acumatica BQL

请帮助我获取此信息。

2 个答案:

答案 0 :(得分:8)

有几种方法可以做到这一点:

<强> 1。使用In3 / Or和BQL常量

您需要做的第一件事就是创建代表A&#39; A&#39;和&#39; B&#39;。 像那样:

public class constantA: PX.Data.Constant<string>
{
    public constantA() : base("A") { }
}
public class constantB: PX.Data.Constant<string>
{
    public constantB() : base("B") { }
}

这将允许您在BQL查询中使用A和B. (您可以在T200培训中找到更多相关信息,例3.1:为查询页面提供数据) (您可以使用PX.Data.Constant<int>PX.Data.Constant<decimal>等,具体取决于参数类型)

之后你可以编写BQL:

PXSelect<Table, Where<Table.field, In3<constantA, constantB>>>

(或PXSelect<Table, Where<Table.field, Equal<constantA>, Or<Table.field, Equal<constantB>>>>

<强> 2。使用In和Required

PXSelect<Table, Where<Table.field, In<Required<Table.field>>>>.Select(graph, new string[]{"A","B"})

这种方式允许您在运行时编写常量列表,并将其作为参数传递给查询。参数应该是相应类型的数组(在这个例子中是它的字符串数组)。

答案 1 :(得分:-1)

仅选择一个项目,其中field =&#34; A&#34;。字段=&#34; B&#34;存在

    var arr = new string[]{"A","B"};

    PXSelect<Table, Where<Table.field, In<Required<Table.field>>>>.Select(new PXGraph(), arr ,**arr**)

它发生了,但为什么呢? 感谢。