我们已经介绍了《任务列表控件》,现在介绍“任务列表(SP)”控件,表示用存储过程取数后在系统首页进行提醒或者展示,如下图红框中的任务列表就是“任务列表(SP)”。
要实现存储过程取数提醒,首先我们需要写好存储过程,如下(SQLServer的,MySQL的请自行修改):
-- 员工业绩报表 -- DROP PROCEDURE sp_EmployeeReport -- EXEC sp_EmployeeReport @StartTime='2023-01-01' CREATE PROCEDURE sp_EmployeeReport @StartTime SMALLDATETIME = NULL, @EndTime SMALLDATETIME = NULL, @DeptName NVARCHAR(50) = NULL, --部门 @EmployeeName NVARCHAR(50) = NULL, --部门 @InsuranceCompanyName NVARCHAR(50) = NULL, --保险公司 @ProductName NVARCHAR(50) = NULL --险种 AS SELECT d.__Name__ AS DeptName, e.__Name__ AS EmloyeeName, pt.__Name__ AS ProductName, SUM(p.baodanbaofei) AS baodanbaofei, SUM(p.shishoubaofei) AS shishoubaofei, e.__ID__ FROM __Policy__ p LEFT JOIN __Employee__ e ON p.__FK_Employee_ = e.__ID__ LEFT JOIN __Department__ d ON e.__FK_Department_=d.__ID__ LEFT JOIN __InsuranceCompanyProductType__ insu ON p.__FK_InsuranceCompanyProductType_=insu.__ID__ LEFT JOIN __InsuranceCompany__ insuComp ON insu.__FK_InsuranceCompany_=insuComp.__ID__ LEFT JOIN __ProductType__ pt ON insu.__FK_ProductType_=pt.__ID__ WHERE (@StartTime IS NULL OR p.__SignDate__>=@StartTime) AND (@EndTime IS NULL OR p.__SignDate__<=@EndTime) AND (@EmployeeName IS NULL OR e.__Name__ LIKE '%'+@EmployeeName+'%') AND (@DeptName IS NULL OR d.__Name__ LIKE '%'+@DeptName+'%') AND (@InsuranceCompanyName IS NULL OR insuComp.__Name__ LIKE '%'+@InsuranceCompanyName+'%') AND (@ProductName IS NULL OR pt.__Name__ LIKE '%'+@ProductName+'%') GROUP BY d.__Name__,e.__Name__,e.__ID__,pt.__Name__ ORDER BY d.__Name__,e.__Name__,pt.__Name__
从上面存储过程sp_EmployeeReport中,我们返回了6个字段,字段名请记住,在下面会用到;
写好存储过程后,就可以增加“任务列表(SP)”了,如下图:
从“工具箱\常规控件”中选择“任务列表(SP)”后添加到首页合适区域,如上图,并设置属性。
任务:
任务:
任务ID:必填,每个任务必须要有一个ID,用于设置任务权限;
任务说明:客户端首页任务上面的标题,如下图红框中的就是“任务说明”:
自动刷新:True表示任务会自动刷新
刷新频率:“自动刷新”为True设置多少分钟自动刷新一次此任务列表;
数据属性:
取数类型:选“SP”;
存储过程:填我们上面编写好的存储过程名sp_EmployeeReport;
过滤条件:前面我们编写的SQLServer存储过程有6个可Null的参数(@StartTime,@EndTime,@DeptName,@EmployeeName,@InsuranceCompanyName,@ProductName ),所以这里设置过滤条件的“字段名”必须和存储过程参数名保存一致(不包括@)。“比较”随便选(因为存储过程的参数不能传入比较符的)。“值”支持固定字符串或者E6脚本,这里用ToDay(-365)的E6脚本,表示StartTime传入“今天-365天”的日期值。
自动生成列:如果您的存储过程返回的列是不固定的(比如根据条件动态拼接的SQL语句返回列可能不固定)则这里选择True;
列设置:点击右侧的按钮设置“任务列表(SP)”的列。如下,由于我们存储过程返回的列有如下图的(DeptName,EmployeeName,ProductName,baodanbaofei,shishoubaofei,__ID__)等等。
根据实际的存储过程中SELECT返回的值类型,选择正确的“自定义列类型”后“添加”
设置每一列的“列表头”属性和“数据库字段”属性,如下图“部门名称”列的“数据库字段”属性就设置和存储过程的列DeptName一致。
设置好上述属性以后,我们的任务列表就可以运行了!发布后登录客户端即可显示。
完结!