Epicor BAQ - BAQ设计与调用

目录

  • 一、BAQ设计常用功能
    • 1.跨公司查询
    • 2.修改作者
    • 3.添加筛选条件
    • 4.使用BAQ参数
    • 5.子查询
  • 二、在客制化中调用BAQ取数
  • 三、在BPM中调用BAQ取数
  • 四、结束


一、BAQ设计常用功能

1.跨公司查询

在BAQ的General页面勾选Cross-company后,BAQ可以跨公司查询数据。
在这里插入图片描述

2.修改作者

在BAQ设计中,如果BAQ的作者不是当前账号,系统是不允许进行修改的,这个时候我们可以使用Actions/Change Author功能把BAQ的作者修改为当前账号。
在这里插入图片描述

3.添加筛选条件

BAQ筛选条件分为Table Criteria和SubQuery Criteria两类,Table Criteria只能对Table栏位进行筛选,而SubQuery Criteria既能对Table栏位进行筛选,也能对查询结果的Calculated栏位进行筛选。
在这里插入图片描述

4.使用BAQ参数

先使用Actions/Define Parameters功能定义BAQ参数,定义好之后,就可以在筛选条件中使用定义的参数作为筛选条件。
在这里插入图片描述
在这里插入图片描述

5.子查询

BAQ中可以通过下图方式,添加子查询,
在这里插入图片描述

子查询可以分为如下几类:

类型描述
TopLevel简单查询的默认值;每个BAQ只可以包含一个TopLevel子查询。
UnionUnion用于合并两个表的数据,两个表所有选定的列数据类型需要相同,并且合并后两个表中重复的数据只保留一行。
UnionAllUnionAll用法与Union一样,但是合并后两个表中重复的数据也会保留。
IntersectIntersect返回两个或多个选择查询的结果。但是,它只返回所有查询都有的行。如果一条记录存在于一个查询中而不存在于另一个查询,则将从结果中忽略该记录。
Except返回Except操作左侧查询中的所有非重复值,并且这些值也不是从右侧查询中返回的。
CTE公共表表达式(CTE)可以看作是在单个SELECT的执行范围内定义的临时结果集,也可以用作子查询。
CTE的常见用途是查询分层数据。返回分层数据是递归查询的常见用法,例如:在组织结构图中显示员工,或在物料清单场景中显示数据,在该场景中,父产品有一个或多个组件,而这些组件又可能有子组件或是其他父产品的组件。
InnerSubQueryInnerSubQuery通常作为另一个查询中的嵌套查询,即将当前查询的结果用到另外一个查询中。

子查询返回行可设定为如下几种

类型描述
All默认值;指定返回结果为查询到的所有行。
Distinct指定返回结果去掉其中重复的行。
Top指定返回的行数或行百分比。
使用With Ties时需要同时指定Order By列,如果在查询数据中有与返回结果最后一行的Order By列的值相同的行,则这些行也会加到返回结果中,这时候返回的行数将超过指定返回的行数或行百分比
DistinctTop对应于同时使用Distinct和Top子句。

在这里插入图片描述

二、在客制化中调用BAQ取数

这里使用DynamicQueryAdapter来获取BAQ查询到的数据,数据筛选使用BAQ参数。

方法代码如下:

/// <summary>从BAQ获取数据</summary>public DataTable GetBAQData(Ice.Lib.Framework.EpiTransaction otrans, string queryID, Parameter[] queryParameter, bool clearParameter = true){DataTable result = null;try{using (Ice.Adapters.DynamicQueryAdapter dqa = new Ice.Adapters.DynamicQueryAdapter(otrans)){dqa.BOConnect();Ice.BO.QueryExecutionDataSet dsQueryExecution = dqa.GetQueryExecutionParametersByID(queryID);if (clearParameter) dsQueryExecution.ExecutionParameter.Clear();//清除已有的BAQ参数if (queryParameter != null){for (int r = 0; r < queryParameter.Length; r++){//重新添加BAQ参数dsQueryExecution.ExecutionParameter.AddExecutionParameterRow(queryParameter[r].ParameterID, queryParameter[r].ParameterValue, queryParameter[r].ValueType, queryParameter[r].IsEmpty, Guid.NewGuid(), "A");}}dqa.ExecuteByID(queryID, dsQueryExecution);//执行BAQ查询if (dqa.QueryResults.Tables["Errors"].Rows.Count > 0){throw new Exception(queryID + "," + Convert.ToString(dqa.QueryResults.Tables["Errors"].Rows[0]["ErrorText"]));}result = dqa.QueryResults.Tables["Results"];}}catch (Exception ex){throw new Exception(queryID + "," + ex.Message);}return result;}/// <summary>BAQ参数数据类型</summary>public class DataType{public static string Nvarchar = "nvarchar";public static string Bit = "bit";public static string Date = "date";public static string Decimal = "decimal";public static string Int = "int";}/// <summary>BAQ参数</summary>public class Parameter{public string ParameterID { get; set; }public string ParameterValue { get; set; }public string ValueType { get; set; }public bool IsEmpty { get; set; }public Parameter(string parameterID, string parameterValue, string dataType, bool isEmpty = false){ParameterID = parameterID;ParameterValue = parameterValue;ValueType = dataType;IsEmpty = isEmpty;}}

调用样例:

List<Parameter> parList= new List<Parameter>();
parList.Add(new Parameter("PackNum", Convert.ToInt32(edvShipHead.CurrentDataRow["PackNum"]).ToString(), DataType.Int));
DataTable dt = GetBAQData(oTrans, "BK_GetShipData", parList.ToArray());

三、在BPM中调用BAQ取数

在BPM中,可以使用DynamicQuery的BO方法来获取BAQ查询到的数据,数据筛选也使用BAQ参数,相关代码如下:

//实例化DynamicQuery的BO对象
Ice.Contracts.DynamicQuerySvcContract boDynamicQuery = Ice.Assemblies.ServiceRenderer.GetService<Ice.Contracts.DynamicQuerySvcContract>(Db);
//实例化BAQ查询需要的数据集
Ice.Tablesets.QueryExecutionTableset dsQueryExecution = new Ice.Tablesets.QueryExecutionTableset();
//在数据集中添加BAQ查询需要的参数
Ice.Tablesets.ExecutionParameterRow drRow = new Ice.Tablesets.ExecutionParameterRow();
drRow.ParameterID = "PackNum";  
drRow.ParameterValue = packNum.ToString();
drRow.ValueType = "int";
drRow.IsEmpty = false;
drRow.RowMod = "A";
drRow.SysRowID = new Guid();
dsQueryExecution.ExecutionParameter.Add(drRow);
//获取BAQ查询到的数据
DataSet dsResults = boDynamicQuery.ExecuteByID("BK_GetShipData", dsQueryExecution);

四、结束

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/26484.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Cloudflare 错误 1006、1007、1008 解决方案 | 如何修复

根据不完全统计&#xff0c;使用 Cloudflare 的网站比例已经接近 20%。因此&#xff0c;在日常工作中&#xff0c;比如进行网页抓取时&#xff0c;您可能经常会遇到一些因 Cloudflare 而产生的困难。例如&#xff0c;遇到 Cloudflare 错误 1006、1007 和 1008&#xff0c;这些错…

AForge.NET介绍

AForge.NET是一个功能强大的开源计算机视觉库&#xff0c;它主要提供了以下功能&#xff1a; 图像处理&#xff08;AForge.Imaging&#xff09;&#xff1a; 提供了一系列预定义的图像滤波器&#xff0c;包括模糊、锐化、边缘检测等。 支持色彩空间转换和像素操作&#xff0c;…

水电表抄表解决方案

1.简述&#xff1a;水电表抄表方案的必要性 水电表抄表是物业管理服务中不可或缺的一环&#xff0c;它涉及到费用计算、资源优化配置及其环保节能监管等各个方面。传统的手工抄表方法不但耗时费力&#xff0c;且容易出差错&#xff0c;因而&#xff0c;现代化抄表方案是十分重…

Strict-Transport-Security(HSTS) X-Frame-Options X-XSS-Protection

一、Strict-Transport-Security&#xff08;HSTS&#xff09; 1、HSTS介绍 HTTP Strict-Transport-Security&#xff08;通常简称为 HSTS&#xff09;响应标头用来通知浏览器应该只通过 HTTPS 访问该站点&#xff0c;并且以后使用 HTTP 访问该站点的所有尝试都应自动重定向到 …

Java——重载

一、重载&#xff08;Overload&#xff09; 1、重载是什么 方法重载&#xff08;Method Overloading&#xff09;是Java中实现多态的一种方式。它允许在同一个类中定义多个同名的方法&#xff0c;只要这些方法的参数列表不同。这些不同的参数列表可以通过不同的参数类型、参数…

Web前端项目源码:深入解析与未来探索

Web前端项目源码&#xff1a;深入解析与未来探索 Web前端项目源码&#xff0c;如同隐藏在数字世界中的宝藏&#xff0c;蕴含着丰富的技术与智慧。它是构建现代网页应用的核心&#xff0c;也是实现用户交互和界面呈现的关键所在。本文将从四个方面、五个方面、六个方面和七个方…

构建全面框架 | 简化基因组+线粒体遗传进化联合分析

近日&#xff0c;凌恩生物客户河北农业大学、浙江大学及英国格林威治大学的研究团队合作&#xff0c;在《Insect Science》杂志上发表了题为“A comprehensive framework for the delimitation of species within the Bemisia tabaci cryptic complex, a global pest-species g…

Jira系统基本介绍

0 Preface/Foreword 1 使用人群 使用者包括以下&#xff1a; 企业管理层项目经理测试人员开发人员其他人员 2 Issue相关 2.1 缺陷类型 缺陷类型包括&#xff1a; 代码错误&#xff1a;常见的开发引起的错误设计缺陷&#xff1a;前期代码的框架搭建、界面设计等导致的缺陷…

GStreamer安装——iOS

安装iOS开发 支持从iOS6开始的所有版本 先决条件 iOS开发需要下载Xcode和iOSSDK。Xcode 可以在App Store或 这里 iOSSDK&#xff0c;如果它还没有包含在您的Xcode版本中&#xff0c; 可以从下载选项卡下的Xcode首选项菜单下载。 最低要求iOS版本为6.0。的最低要求版本 Xcode…

VUE做官方网站,兼容PC端和移动端的中英文切换显示,国际化库使用步骤详细教程

在使用Vue.js开发官方网站时&#xff0c;实现中英文的国际化显示&#xff0c;可以采用以下步骤和策略&#xff1a; 选择国际化库&#xff1a;Vue.js社区提供了多个国际化库&#xff0c;最常用的是vue-i18n。它是一个国际化插件&#xff0c;专为Vue.js应用程序设计。 安装vue-i…

字节流和字符流的区别

字节流和字符流的区别 字节流 **数据单位&#xff1a;**Byte为单位进行数据传输和处理。 **应用场景&#xff1a;**适用于所有类型的文件&#xff0c;包括视频、视频、音频等二进制文件&#xff0c;以及文本文件。 比如InputStrem和子类&#xff08;FileInputStream&#x…

计算机网络知识点(三)

目录 一、简述TCP连接和关闭的状态转移 二、简述TCP慢启动 三、简述TCP如何保证有序 四、简述TCP常见的拥塞控制算法 五、简述TCP超时重传 一、简述TCP连接和关闭的状态转移 状态转移图 图中上半部分是TCP的三次握手过程的状态变迁&#xff0c;下半部分是TCP四次挥手过程的…

Web前端引言:探索数字世界的无限可能

Web前端引言&#xff1a;探索数字世界的无限可能 在数字化浪潮席卷全球的今天&#xff0c;Web前端技术以其独特的魅力引领着互联网的发展。作为连接用户与数字世界的桥梁&#xff0c;前端技术不仅关乎用户体验&#xff0c;更是产品竞争力的关键因素。本文将从四个方面、五个方…

Unity接入PS5手柄和Xbox手柄以及Android平台的(以及不同平台分析)

Unity接入PS5手柄和Xbox手柄以及Android平台的&#xff08;以及不同平台分析&#xff09; 介绍Unity手柄小知识PC端和编辑器上的摇杆事件和滑动事件PS5手柄Xbox手柄北通手柄 安卓环境下&#xff08;安卓手机或者安卓模拟器&#xff09;PS5手柄Xbox手柄北通手柄 总结 介绍 最近…

Springboot高校实训管理平台-计算机毕业设计源码01557

目 录 摘要 1 绪论 1.1 研究背景 1.2 研究意义 1.3论文结构与章节安排 2 高校实训管理平台系统分析 2.1 可行性分析 2.2 系统流程分析 2.2.1 数据增加流程 2.2.2 数据修改流程 2.2.3 数据删除流程 2.3 系统功能分析 2.3.1 功能性分析 2.3.2 非功能性分析 2.4 系…

2006-2024年款别克君越维修手册和电路图资料更新

经过整理&#xff0c;2006-2024年款别克君越&#xff08;含君越混动版&#xff09;全系列已经更新至汽修帮手资料库内&#xff0c;覆盖市面上99%车型&#xff0c;包括维修手册、电路图、新车特征、车身钣金维修数据、全车拆装、扭力、发动机大修、发动机正时、保养、电路图、针…

MT7981B+MT7976C+MT7531A RF定频测试方法

1、从下面网址下载QA软件包&#xff0c;然后在WIN系统下安装QA环境。 https://download.csdn.net/download/zhouwu_linux/89428691?spm1001.2014.3001.5501 在WINDOWS 7系统下先安装WinPcap_4_1_3.exe。 2、搭建硬件环境&#xff0c;电脑先连接仪器&#xff0c;主板网络与电…

028、工具_Pipeline

Redis客户端执行一条命令分为如下四个过程: 1)发送命令 2)命令排队 3)命令执行 4)返回结果 其中1)+4)称为Round Trip Time(RTT,往返时间)。 Pipeline(它能将一组Redis命令进 行组装,通过一次RTT传输给Redis,再将这组Redis命令的执行结果按顺序返回给客户端,图3-…

Docker 镜像全军覆没后,如何给Ubuntu手动安装 docker 服务

Docker 镜像全军覆没后&#xff0c;如何给Ubuntu手动安装 docker 服务 下载地址下载自己需要的安装包使用下面的命令进行安装启动服务 最近由于某些未知原因&#xff0c;国内的docker镜像全部被停。刚好需要重新安装自己的笔记本为双系统&#xff0c;在原来的Windows下&#xf…

layui一个页面多个table显示时工具栏被下方的table遮挡

记录&#xff1a;layui一个页面多个table显示时工具栏被下方的table遮挡 css代码&#xff1a; [lay-idcurrentTableId] .layui-table-tool {position: relative;z-index: 9999;width: 100%;min-height: 50px;line-height: 30px;padding: 10px 15px;border-width: 0;border-bot…