acumatica - 使用 In 运算符返回错误结果的 Bql 查询
问题描述
我正在使用 InvoiceEntryExt Graph 扩展,并添加了一个名为“Receipts”的 DAC,我已经用 IEnumerable 方法覆盖了它。
public PXSelect<POReceipt> Receipts;
public IEnumerable receipts()
{
List<string> receiptNbrList = new List<string>();
foreach(APTran tran in Base.Transactions.Select())
{
if(!string.IsNullOrEmpty(tran.ReceiptNbr) && !receiptNbrList.Contains(tran.ReceiptNbr))
{
receiptNbrList.Add(tran.ReceiptNbr);
}
}
object[] values = receiptNbrList.ToArray();
PXResultset<POReceipt> rcpts = PXSelect<POReceipt, Where<POReceipt.receiptNbr, In<Required<POReceipt.receiptNbr>>>>.Select(new PXGraph(), values);
return rcpts;
}
当查询执行时,我将多个收据编号传递到值数组中,但每次我只得到 1 个收据结果,当我知道事实应该有更多时。
解决方案
您传递值的方式不正确,如下面的代码
object[] values = receiptNbrList.ToArray();
PXResultset<POReceipt> rcpts = PXSelect<POReceipt, Where<POReceipt.receiptNbr, In<Required<POReceipt.receiptNbr>>>>.Select(new PXGraph(), values);
将值作为 传递params object[] pars
,但该数组应包含对应于每个 Current/Optional/Required 的值。
为In
operator 传递参数的正确方法如下:
string[] values = receiptNbrList.ToArray();
PXResultset<POReceipt> rcpts = PXSelect<POReceipt, Where<POReceipt.receiptNbr, In<Required<POReceipt.receiptNbr>>>>.Select(new PXGraph(), new object[]{ values });
您应该将对象数组传递给 Select 方法,并且该数组的第一个成员应该是与 In 运算符中的 Required 运算符相对应的字符串数组。
推荐阅读
- drools - 如何使用 In 运算符将 EXCEL 中的多个值与 Drools 进行比较
- ruby-on-rails - 将新的日志文件添加到 /var/app/support 文件夹
- javascript - 为什么在 Django admin 中保存对象后方法“prepopulated_fields”不起作用?
- javascript - 将输入类型周限制为当前周
- pgadmin-4 - 如何设置默认首选项?
- mysql - mysql。滑动日期和时间并将最小值设置为签入,最大值设置为结帐
- php - 我正在尝试从我的后端 api 获取图像。但我无法做到这一点。请帮助我
- python - 二进制到十进制 Python 解决方案的字符串索引错误
- c++ - 使用 SQLAPI 库 (C++) 对“...”的未定义引用
- docker - docker compose in bitbucket - 无法连接到 unix:///var/run/docker.sock 上的 Docker 守护程序。docker 守护进程是否正在运行?