You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何从通用查询(GI)获取筛选器并通过代码添加条件过滤结果

关于Acumatica通用查询(GI)结果集的三个问题解答

1. 从结果集中获取筛选参数

你可以通过PXGenericInqGrph的Filter集合获取GI的筛选参数,每个筛选条件对应GenericFilter对象。示例代码:

PXGenericInqGrph graph = PXGenericInqGrph.CreateInstance(GiGuidID);
// 遍历获取所有筛选参数
foreach (GenericFilter filter in graph.Filter.Cache.Select())
{
    string filterField = filter.FieldName;
    object filterValue = filter.Value;
    // 按需处理筛选参数,比如打印或存储
    PXTrace.WriteInformation($"筛选字段: {filterField}, 对应值: {filterValue}");
}

如果GI包含多页签的筛选器,可通过FilterID属性区分不同页签的筛选条件。

2. 编程方式用WHERE子句过滤结果

可以直接在Select()方法前添加Where条件,借助Acumatica的查询语法扩展实现。示例:

PXGenericInqGrph graph = PXGenericInqGrph.CreateInstance(GiGuidID);
// 添加WHERE条件,替换为GI中实际的字段名和目标值
PXResultset<GenericResult> filteredResults = graph.Results
    .Where<GenericResult.yourGiFieldName>(field => field == "目标筛选值")
    .Select();

若筛选关联表字段,需使用完整字段引用格式,比如<BAccount.acctCD>。

3. 遍历结果集并手动筛选

完全支持遍历结果集后执行自定义筛选,适合处理复杂业务逻辑场景。示例:

PXGenericInqGrph graph = PXGenericInqGrph.CreateInstance(GiGuidID);
PXResultset<GenericResult> results = graph.Results.Select();

List<GenericResult> filteredList = new List<GenericResult>();
foreach (GenericResult result in results)
{
    // 获取指定字段的值,替换为GI中实际字段名
    string targetFieldValue = result.GetValue<string>("TargetField");
    // 自定义筛选逻辑
    if (!string.IsNullOrEmpty(targetFieldValue) && targetFieldValue.Contains("关键字"))
    {
        filteredList.Add(result);
    }
}
// 如需用Acumatica API后续处理,可转换为PXResultset
PXResultset<GenericResult> filteredResults = new PXResultset<GenericResult>(filteredList);

这种方式能实现任意复杂的筛选逻辑,但数据量较大时,效率低于直接在查询层面添加WHERE条件。

内容的提问来源于stack exchange,提问作者Bajrang Patidar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.13 06:50:58