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

扩展Generic Inquiry显示记录数及通过PXGenericInqGrph高效获数咨询

如何在Acumatica Generic Inquiry中高效获取并显示记录总数?

绝对可以!不管是要在Generic Inquiry界面上直接显示记录总数,还是通过代码用PXGenericInqGrph高效获取这个数字,都有性能友好的解决方案——核心就是让数据库来做计数,而不是把所有记录拉到应用层再统计,这完全符合你的性能要求。下面分两种场景详细说明:

一、扩展Generic Inquiry界面显示记录总数

方法1:在GI设计器中添加聚合计数字段(最简便)

打开你的Generic Inquiry设计器,在「结果字段」区域添加一个新字段:

  • 选择聚合函数为COUNT,目标字段可以选任意非空字段(比如表的主键)
  • 把这个字段的「总计」属性设为True

这样GI在运行时会直接向数据库发送带COUNT(*)的查询,只返回总数,不会拉取所有记录。如果想让总数在界面更显眼(比如网格上方),可以定制GI的ASPX页面:添加一个标签和只读数字控件,绑定到这个计数字段,就能直观展示了。

方法2:定制GI页面逻辑(更灵活)

如果需要更个性化的显示(比如结合筛选条件动态更新总数),可以创建一个继承PXGenericInqGrph的定制图,在RowSelected事件里执行数据库层面的COUNT查询,再把结果赋值给界面控件——注意绝对不要遍历所有记录来计数,始终让数据库完成统计工作。

二、用PXGenericInqGrph高效获取GI的记录数

如果是在代码中需要获取GI的记录数,绝对不要用Select().Count()(这会拉取所有记录到应用层),而是直接构建聚合查询让数据库计算:

示例代码1:复用GI的查询条件做计数

// 创建GI的图实例并加载指定查询
var giGraph = PXGraph.CreateInstance<PXGenericInqGrph>();
giGraph.InqName = "Your_GI_Name";
giGraph.LoadInquiry();

// 获取GI的主视图查询
var primaryQuery = giGraph.Views[giGraph.PrimaryViewName] as PXSelectBase;
if (primaryQuery == null) return 0;

// 构建聚合计数查询,复用GI的筛选条件
var countSelect = new PXSelectAggregate<
    Aggregate<Count<YourDAC.PKField>>,
    Where<YourDAC.PKField, IsNotNull>>();
// 注:这里可以直接复用GI原始查询中的Where条件,确保计数和GI的筛选逻辑一致

// 执行查询获取总数
var countResult = countSelect.Select(giGraph).FirstOrDefault();
int totalRecords = countResult != null ? (int)countResult[0] : 0;

示例代码2:直接生成COUNT SQL(更高效)

如果想更直接,可以提取GI的基础查询,包装成COUNT子查询:

var giGraph = PXGraph.CreateInstance<PXGenericInqGrph>();
giGraph.InqName = "Your_GI_Name";
giGraph.LoadInquiry();

// 获取GI的原始SQL查询
var baseQuery = giGraph.GetSelectQuery();
// 构建COUNT查询,让数据库直接统计子查询结果的数量
var countSql = $"SELECT COUNT(*) FROM ({baseQuery}) AS SubQuery";

// 执行SQL获取结果
using (var cmd = new PXCommand(giGraph, countSql))
{
    var scalarResult = cmd.ExecuteScalar();
    int totalRecords = scalarResult != DBNull.Value ? Convert.ToInt32(scalarResult) : 0;
}

关键性能提示

不管用哪种方法,核心都是让数据库执行COUNT操作,避免将所有记录加载到应用内存中再计数——这能极大减少数据库传输和应用层的资源消耗,完全满足你的性能要求。

内容的提问来源于stack exchange,提问作者Joseph Caruana

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 04:17:36