【发布时间】:2021-12-18 03:03:37
【问题描述】:
我正在尝试复制可以在 SQL Server 中执行的以下类型的 SQL 查询...这里的重要部分是 WHERE 子句: 从 InventoryItem WHERE InventoryCD IN ('123123', '154677', '445899', '998766') 中选择 InventoryCD
使用 IN3 运算符和一系列字符串常量可以完美地工作:
即 And
但是,我需要能够使用数组中任意长的值列表来执行此操作,并且我需要能够在运行时动态设置值。
我不确定需要将什么类型传递给 PXProjection 查询中的 IN 语句。我一直在使用以下方法,但这会引发编译器错误。
public class SOSiteStatusFilterExt : PXCacheExtension<SOSiteStatusFilter>
{
public static bool IsActive()
{
return true;
}
public abstract class searchitemsarray : PX.Data.IBqlField
{
}
[PXUnboundDefault()]
public virtual string[] Searchitemsarray { get; set; }
}
我想也许我需要一个 PXString 对象数组?我真的不确定,也没有任何有用的文档。有人可以帮忙吗?
这显示了如何使用常规 PXSelect:https://asiablog.acumatica.com/2017/11/sql-in-operator-in-bql.html
但我需要能够使用 Select2 传递正确的类型...
【问题讨论】:
-
您可以使用任何 PXSelect 方法,您链接到的示例说明了如何使用“必需”BQL 运算符进行操作。所以你需要做 In3
> 并在 Select 方法参数中传递参数值。 -
尝试像示例中那样传递一个 Object 数组作为参数。或者如果它不起作用,则将您的数组格式化为字符串数组类型。
-
DAC 类型不好。字符串数组不适用于 DAC。您需要更改它并转换数据类型。
-
在 Select2 语句中......我在 Where 语句中使用它: And
> 我对 searchitemsarray 使用什么 DAC 字段类型? BQL 需要某种 DAC 字段类型...但我不知道将我的字符串数组转换为什么来进行 DAC 演示。你认为你可以提供一个使用 Select2 的快速示例,以及在运行时传入 IN 的任何字符串数组吗?
标签: acumatica