在Acumatica中将SQL转换为BQL

van*_*nak 1 acumatica

我想从SQL翻译

select * from table where table.field in('A','B') 
Run Code Online (Sandbox Code Playgroud)

到Acumatica BQL.

请帮助我获取此信息.

Dmi*_*mov 9

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

1.使用In3/Or和BQL常量

首先,您需要创建表示"A"和"B"的BQL常量.像那样:

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

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

之后你可以编写BQL:

PXSelect<Table, Where<Table.field, In3<constantA, constantB>>>
Run Code Online (Sandbox Code Playgroud)

(或 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"})
Run Code Online (Sandbox Code Playgroud)

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