VC组件查询配置

   通过设置VC上的配置实现对当前业务数据的查询,如显示列表VC上的漏斗查询,可以通过每个列的值进行数据的筛选。查询时会触发BeforeGetData(查询数据前)和AfterGetData(查询数据后)事件,事件具体使用方法详见业务组件事件

VC查询漏斗 VC高级查询 查询组件VC 查询VC和列表VC查询漏斗组合查询 列表VC漏斗查询和其他条件组合查询

VC查询漏斗:

   在VC业务视图组件上的基本配置上勾上‘允许查询’,生成BPO业务单元时会在列表上生成查询漏斗,可配置每列的值和逻辑符对数据进行查询,相当于设置sql语句的where条件如:where 列名 =(逻辑符) 列的值,多列同时设置了条件则用and连接查询。

   漏斗查询的查询条件除了不会覆盖BC业务组件where条件外,其它查询条件都会覆盖如VC的查询条件,BC自定义查询等条件。

设置如下图:

image.png

显示效果:

image.png

未设置:清空查询逻辑符。

执行查询:点击即按照当前设置的条件查询数据或直接按回车键进行查询(常用)。

清除当前条件:清除当前列设置的条件,编辑框内容将置空并进行查询。

清除所有条件:清除所有列设置的条件,所有列的编辑框内容置空即无条件查询,显示所有数据。

  页面显示时设置查询逻辑符的弹框默认为“包含(LIKE)”,如果想将逻辑符默认设置成其它值时可以重写BPObject\UCML_JS\UCML.DataGrid.js里的onQueryMenuReady方法。

image.png

示例:

  编辑好要查询的字段值后,点击查询漏斗设置查询逻辑符(>=、>等)最后回车即可按照设置的条件查询数据。如下图查询采购单号包括“CGD”和单据日期等于“2017-08-10”的数据:

image.png

VC高级查询:

  通过调用VCName.DoSearch([isUser])函数,弹出高级查询设置组件的弹框,可以灵活设置VC显示的各字段之间的组合查询并可以保存设置好的方案,方便下次可以直接使用。

函数:VCName.DoSearch([isUser])

说明:

   VCName:业务视图组件VC的名称

   isUser:非必填项,是否用户过滤,参数值为true时,实现当前登录人只能读取自己保存的方案。

目标库为Oracle时注意:VCName.DoSearch()之前需要添加VC_Name.dbType = 1;如下:

VCName.dbType = 1;
VCName.DoSearch();

示例:

在VC业务视图组件中添加一个按钮,并配置如下代码:

image.png

代码:

VC_BooksImpList_vcGJ.DoSearch();

打开页面,点击按钮,在弹出的小窗口上配置自己需要的条件,执行查询,也可将方案进行保存,以后可读取出来直接使用。

image.png

执行查询】:根据当前设置的查询条件进行数据查询。

清除条件】:清除设置的查询条件,如增加了多个条件则只保留第一个条件并将取值项设置为空

保存方案】:在查询方案编辑框处填写方案的名称,点击保存方案就会将当前的查询条件保存到数据库,下次查询的时候可以在下拉框处选择方案已保存的方案,就会把方案里设置的条件显示在列表中,执行查询时将会按照方案里的条件进行查询。

删除方案】:删除选中的查询方案。

增加】:新增一个查询条件。

删除】:删除当前的查询条件。

如想在执行查询前对查询条件做处理,则重写makeCondi方法

image.png

代码:

UCML.GridSearch.prototype.makeCondi=function(){
   var fieldListx = "";
    var valueListx = "";
    var condiIndentListx = "";
    var GridSearchLCondi = this.getCondiSQL();    //查询条件
    if (GridSearchLCondi != null) {
        this.dataTable.SetCondiList(fieldListx, valueListx, condiIndentListx, GridSearchLCondi, 0);
        this.dataTable.getData(0, this.dataTable.getDefaultPageCount());
    }
}

查询组件VC:

  在查询组件VC中设置要显示的字段和各个字段的各种操作配置(括号、操作符、连接符等),然后设计编辑页面,通过获取页面中字段的值和VC中设置好的各操作配置组成where条件,调用VCName.ExecuteQuery()来实现对数据的查询。常用于对主要字段的查询,与列表VC配合使用。

函数:

VCName.ExecuteQuery():执行查询,VCName为查询组件VC的名称

VCName.GetQuerySQL():查看VCName.ExecuteQuery()方法中的SQL条件

  目标库为Oracle时注意,需要在JS初始化或查询前任意时刻(如BeforeGetData)指定数据库类型为ORACLE,代码:

//BC_Name为BC业务组件的名称
BC_NameBase.DataBaseType = "ORACLE";

示例1:

1、在VC业务视图组件中添加查询组件

image.png

2、在VC上添加一个执行查询按钮,按钮事件里代码:

VC_PO_OderMainQueryForm.ExecuteQuery();
//弹出查询条件
alert(VC_PO_OderMainQueryForm7191.GetQuerySQL());

3、在页面设计中,配置页面设计、各个字段的各种操作配置(括号、操作符、连接符等)

图片.png

逻辑连接符:设置与下一个字段之间的连接符(and/or)

左括号,右括号:当设置多个字段之间的组合查询时用到,如(PONo <> '' and PONo is not null) or BusinessState=1

4、创建BPO,引入相应BC、列表VC和上述查询VC,生成编译

页面效果:

image.png

VCName.GetQuerySQL()方法获取到的SQL条件,没有填值的字段默认条件为1=1

image.png

示例2(多条件为同一字段):

  对于同一个字段有多个条件要求时,可用这种方法。例如:查询日期在某个时间段之间,则需要对日期字段设置两个条件,一个>=开始日期,一个<=结束日期。

第1、2、4步同示例1

3、多个条件为同一字段时,这里以查询书籍编号位于某个区间的数据

  1. 1) 在VC中将列的字段名称和中文含义设置成同一值:

      image.png

  1. 2) 自定义两个编辑控件,dataFld属性都设置为字段BookID,在列处勾上自定义控件并将对应控件的ID填到控件ID处,如下图:

     image.png

获取控件ID方法如下:

图片.png

示例3(多选值查询列): 

   对某个字段进行多值查询,相当于SQL语句中的in。

第1、2、4步同示例1 

3、在查询组件VC上的页面设计中需要多值查询的列信息上勾上“多选值查询列”,注意页面执行输入多值查询时,多个值用分号“;”隔开

image.png

页面效果:

image.png


查询VC和列表VC查询漏斗组合查询:

1、在列表VC视图组件显示前处理定义

image.png

VC_QJBQueryList1.customQuery = true;//漏斗查询是否自定义查询函数
VC_QJBQueryList1.customQueryFn = "fn_customQuery";//自定义查询函数名称

2、在BPO上定义查询函数

参数SQLCondi为漏斗查询自动拼接的sql条件,加上VC_QJBQueryForm1.GetQuerySQL()查询VC拼接的sql条件,再执行getData进行查询,实现查询VC和列表VC的漏斗查询组合查询

image.png

function fn_customQuery(SQLCondi) {
    if (SQLCondi != "") {
     SQLCondi += "And " + VC_QJBQueryForm1.GetQuerySQL();   
    }     
    BC_QJBListBase.setSQLCondi(SQLCondi);
    BC_QJBListBase.getData();
}

3、查询VC查询按钮的代码改为调用列表VC的自定义查询

image.png

VC_QJBQueryList1.onRunQueryCustom();


列表VC查询漏斗和其他条件组合查询:

在列表漏斗查询时结合按钮行所设置的条件进行查询

image.png

1、当漏斗输入框查询后,再执行getData查询,此时只需要设置条件SQLCondi,就会自动结合漏斗查询的结果进行查询

image.png

     var obj = ToolBarVC_Goods_WXList.getItem(this.getIndex()-1);
    //var obj = window.WidgetToolBarVC_Goods_WXList.getItem(this.getIndex()-1);
    var value = obj.getValue();
    if (value != 0) {
        var sqlCondi = "Memo = '"+value+"'";
        BC_Goods_WXBase.theSQLCondi = sqlCondi;
        BC_Goods_WXBase.getData();
    }

2、想要实现漏斗查询时结合其他条件,只需要提前设置好VC的SQLCondi即可,漏斗查询时会自动结合SQLCondi进行查询,此案例里注册按钮栏里的下拉框变化事件,下拉框选择的选项发生变化时修改VC的SQLCondi

image.png

var obj = ToolBarVC_Goods_WXList.getItem(0);
obj.on("change", function(){
    var obj = ToolBarVC_Goods_WXList.getItem(0);
    var value = obj.getValue();
    if (value != 0) {
        var sqlCondi = "Memo = '"+value+"'";
        VC_Goods_WXList.SQLCondi = sqlCondi;
    } else {
        VC_Goods_WXList.SQLCondi = "";
    }
});


评论

暂无评论!

发表评论