Acumatica:通过聚合将BqlField值在项目中按组获取计数
创始人
2024-07-25 14:30:54
0

在Acumatica中,可以通过使用GroupBy和Aggregate函数来将BqlField值按组进行计数。以下是一个示例代码:

using PX.Data;
using System;

namespace PX.Objects.AP
{
    public class APDocumentEnq_Extension : PXGraphExtension
    {
        public PXFilter CountByVendor;

        public PXAction countByVendor;

        [PXButton(CommitChanges = true)]
        [PXUIField(DisplayName = "Count by Vendor")]
        protected virtual void CountByVendorProc()
        {
            CountByVendorResult result = PXSelectGroupBy>,
                Where>>>
                .Select(Base)
                .FirstOrDefault();

            CountByVendor.Cache.Clear();
            CountByVendor.Cache.Insert(result);
        }

        [Serializable]
        public class CountByVendorResult : IBqlTable
        {
            #region DocType
            public abstract class docType : PX.Data.IBqlField
            {
            }
            protected String _DocType;
            [PXDBString(3, IsFixed = true, IsKey = true)]
            [PXUIField(DisplayName = "Document Type")]
            public virtual String DocType
            {
                get
                {
                    return this._DocType;
                }
                set
                {
                    this._DocType = value;
                }
            }
            #endregion

            #region DocCount
            public abstract class docCount : PX.Data.IBqlField
            {
            }
            protected Int32? _DocCount;
            [PXDBInt]
            [PXUIField(DisplayName = "Document Count")]
            public virtual Int32? DocCount
            {
                get
                {
                    return this._DocCount;
                }
                set
                {
                    this._DocCount = value;
                }
            }
            #endregion
        }
    }
}

在这个示例中,我们创建了一个自定义的图形扩展类APDocumentEnq_Extension,并在其中添加了一个用于计算按供应商计数的按钮和相关的处理方法。

在计数处理方法CountByVendorProc中,我们使用PXSelectGroupBy语句从APInvoice表中选择文档类型(docType)字段并进行计数。该查询使用了Where子句来限制供应商ID等于当前文档筛选器中的供应商ID。

然后,我们将结果插入到CountByVendor结果集中,并将其显示在屏幕上。

请注意,CountByVendorResult类是一个表示计数结果的嵌套类。它包含了文档类型(docType)和文档计数(docCount)两个字段。这些字段需要被定义为公共的,以便在查询中访问。

要在屏幕上显示计数结果,您需要在页面上添加一个相关的过滤器字段,并将其与CountByVendor结果集关联起来。您还需要在页面上添加一个按钮,并将其与CountByVendorProc方法关联起来。

请注意,在CountByVendorProc方法和CountByVendorResult类中,我们使用了PXDBString和PXDBInt属性来定义字段的数据库类型。这些属性在数据库中创建相应的存储字段,并确保数据正确地存储和检索。

希望这个示例能够帮助您在Acumatica项目中按组获取计数。

相关内容

热门资讯

安卓系统怎么连不上carlif... 安卓系统无法连接CarLife的原因及解决方法随着智能手机的普及,CarLife这一车载互联功能为驾...
iwatch怎么连接安卓系统,... 你有没有想过,那款时尚又实用的iWatch,竟然只能和iPhone好上好?别急,今天就来给你揭秘,怎...
oppo手机安卓系统换成苹果系... OPPO手机安卓系统换成苹果系统:现实吗?如何操作?随着智能手机市场的不断发展,用户对于手机系统的需...
安卓平板改windows 系统... 你有没有想过,你的安卓平板电脑是不是也能变身成Windows系统的超级英雄呢?想象在同一个设备上,你...
iphone系统与安卓系统更新... 最近是不是你也遇到了这样的烦恼?手机更新系统总是失败,急得你团团转。别急,今天就来给你揭秘为什么iP...
安卓系统上滑按键,便捷生活与高... 你有没有发现,现在手机屏幕越来越大,操作起来却越来越方便了呢?这都得归功于安卓系统上的那些神奇的上滑...
安卓系统连接耳机模式,蓝牙、有... 亲爱的手机控们,你们有没有遇到过这种情况:手机突然变成了“耳机模式”,明明耳机没插,声音却只从耳机孔...
希沃系统怎么装安卓系统,解锁更... 亲爱的读者们,你是否也像我一样,对希沃一体机上的安卓系统充满了好奇呢?想象在教室里,你的希沃一体机不...
安装了Anaconda之后找不... 在安装Anaconda后,如果找不到Jupyter Notebook,可以尝试以下解决方法:检查环境...
安卓换鸿蒙系统会卡吗,体验流畅... 最近手机圈可是热闹非凡呢!不少安卓用户都在议论纷纷,说鸿蒙系统要来啦!那么,安卓手机换上鸿蒙系统后,...