我想从 SQL
翻译select * from table where table.field in('A','B')
到Acumatica BQL 。
请帮助我获取此信息。
答案 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**)
它发生了,但为什么呢? 感谢。