LOGO OA教程 ERP教程 模切知识交流 PMS教程 CRM教程 开发文档 其他文档  
 
网站管理员

工作流自定义SQL数据源设置说明,实现用户查询调用

admin
2015年4月21日 10:55 本文热度 44248
先看一个工作流自定义数据源在采购申请单的应用范例:
注意:视频中的物料代码、物料名称、物料规格三列数据都是自动填充的,这个就是自定义SQL数据源的典型应用场景。

点晴OA中工作流申请表单模板中的字段支持自定义数据源,数据源可以是由网管一次性手工输入的,也可以是自定义SQL语句查询而来的。具体使用方法如下:

一、定义数据源类别:
  点击“模板管理”或“流程管理”,找到“数据源维护”,增加数据源类别:

二、对数据源类别增加数据有两种方法,可以是由网管一次性手工输入的、也可以是自定义SQL语句查询而来的:
 方法1、数据源由网管一次性手工输入后供用户调用:

    说明:手工创建数据时,最多支持5个辅助属性,并且需要将属性绑定到申请模板中对应字段。

 方法2、自定义SQL语句查询后供用户调用:
   点晴MIS系统工作流模块支持添加的字段自定义数据来源,数据可以来源于手工新增加的批量数据,也可以来源于点晴MIS系统现有数据库数据,为了确保正确调用到需要的数据,自定义的SQL语句输出时必须严格按照以下格式生成:
select *** as main_info, *** as remark1, *** as remark2, *** as remark3, *** as remark4, *** as remark5, *** as order_sort1, *** as order_sort2 from *** where **** and id='$oabusyuserid$' and product_name='$CS4$' and price>$SON01合计$ and ****

   上面红色部分是必须有的,并且主字段必须重命名为:main_info
   后面的 remark1, remark2, remark3, remark4, remark5, remark6, remark7, remark8, remark9, remark10, remark11, remark12, remark13, remark14, remark15, remark16, remark17, remark18, remark19, remark20 (最多支持导出20个)是辅助输出字段,如果在后续调用时无需使用或需要部分使用的话,就可以留空全部或者保留需要的字段,注意,如果使用了嵌套查询/子查询,嵌套中出现的remark1~20字段也要加在最外层的select中
   后面的 order_sort1, order_sort2 用于排序,默认是asc(升序),如果需要降序输出,可以直接在上面的SQL中追加该字段的降序排序:order by *** desc(降序),这两个不是必须要有的,可以保留一个或都不提供。
   上面这个SQL是被当成视图在点晴OA中进行处理的,具体后台处理方法为:select main_info, remark1, remark2, remark3, remark4, remark5 from (select *** as main_info, *** as remark1, *** as remark2, *** as remark3, *** as remark4, *** as remark5, *** as order_sort1, *** as order_sort2 from *** where **** and id='$oabusyuserid$' and product_name='$CS4$' and price>$SON01合计$ and ****) derive where main_info like '%***%' order by order_sort1, order_sort2
   如果判断上面自定义SQL中有order by,就不会追加后面这个“order by order_sort1, order_sort2”了,而是采用自定义SQL中的排序输出:select main_info, remark1, remark2, remark3, remark4, remark5 from (select top (100) percent *** as main_info, *** as remark1, *** as remark2, *** as remark3, *** as remark4, *** as remark5 from *** where **** and id='$oabusyuserid$' and product_name='$CS4$' and price>$SON01合计$ and **** order by *** desc, *** desc) derive where main_info like '%***%'
   如果自定义SQL中需要采用order by自定义排序,注意一定要在select后面加上约束 top (100) percent ,否则一定会报错,详情请参考以下教程:
   请问工作流和万能魔表两个管理模块的自定义SQL如何实现排序效果?现在总是报错80040e14,除非另外还指定了TOP或FOR XML,否则ORDER BY子句在视图、内联函数、派生表、子查询和公用表表达式中无效。[5]
     http://13585.oa22.cn

   另外,为了方便更精确的控制查询结果,SQL语句中也支持以下几个宏变量:
     $oabusyname$ :当前用户中文姓名;
     $oabusyusername$ :当前用户英文登录名(Email前缀);
     $oabusyuserid$ :当前用户内部ID;
     $oabusyuserdept$ :当前用户所在部门;
     $oabusydept_inner_id$ :当前用户所在部门内码;
     $oabusyuserlevel$ :当前用户所在职级;
     $oabusypost_name$ :当前用户岗位名称;
     $oabusypost_inner_id$ :当前用户岗位内码;
     $oabusymenber_id$ :当前用户工号;

   也支持直接将申请表中表单字段作为SQL中变量:
    主表字段:
     $CS1$$CS2$、......、$CS9$$CS10$$CS11$、......、$CS98$$CS99$
    明细表字段:
     不支持作为SQL查询条件
    明细表合计字段:
     $SON01合计$$SON02合计$$SON03合计$、......、$SON19合计$$SON20合计$
    注意:
     1、以上主表和明细表合计字段都必须大写,不允许用小写;
     2、主表字段小于10时前面无0、明细表字段小于10时前面有0;
     3、主表字段明细表合计字段才支持作为自定义SQL中的变量,明细表字段不支持作为自定义SQL中的变量;
       以示例说明:$CS1$是正确的,$CS01$$cs1$是错误的;$SON01合计$是正确的,$son01合计$$SON1合计$$SON01$$SON1$是错误的。
     4、以上主表和明细表字段只支持在申请时的自定义SQL中调用,不支持在审核和归档时的自定义SQL调用。
 
   测试无误后,还需要在下面 属性1、属性2、属性3、属性4、属性5......、属性19、属性20 中勾选工作流设计表单中对应的字段ID,以后申请新的工作流时,就可以实现自动取数效果了,如果启用了上述属性信息,那么还可以实现辅助字段的自动录入效果。 
 
三、设置只有一个查询结果时是否自动填充并绑定表单模板字段
  采用以上两种方法添加数据源时,需要注意如果查询结果只有一个的话,系统默认会自动完成填充反写到申请表对应的字段,无须用户再次点击。如果觉得不方便,管理员也可以不勾选该项目:


  另外,务必对数据源带出的信息绑定到表单模板中的对应字段上,绑定方法如下: 
 
  上面的SON02、SON03就对应着自定义表单中的SON02、SON03: 
 
四、做好以上设定后,在新增工作流时,就可以自动将相关辅助信息带过来了,不但提高了填表效率,而且避免了填表人填错数据: 
参考资料:
点晴MIS系统后台数据库表字段结构说明:
附件:点晴MIS系统数据库表结构说明.xls

该文章在 2023/7/10 9:11:41 编辑过

全部评论3

admin
2015年4月21日 12:41
SQL数据库查询简单知识点讲解教程下载:
附件:SQL数据库基础讲解.rar

select name as main_info, userdept as remark1, userlevel as remark2, post_name as remark3,dept_all_code as order_sort1 from userinf where not (userdept='离职员工组' or userdept='网管')
上面这句SQL可以调出系统用户、所在部门、职级、岗位,按照部门内码排序,不包括部门离职员工组和网管。

同一个服务器上同一个数据库中调用某个表的数据:
select id as main_info, username as remark1, name as remark2, userdept as remark3, post_name as remark4, input_time as remark5, username as order_sort1, id as order_sort2 from userinf where username='$oabusyusername$'
上面这句SQL可以调出系统用户信息,调出的信息限定为当前申请人。

同一个服务器中跨数据库调用其他数据库中某个表的数据:
select id as main_info, username as remark1, name as remark2, userdept as remark3, post_name as remark4, input_time as remark5, username as order_sort1, id as order_sort2 from other_db_name.dbo.userinf where username='$oabusyusername$'
注意:必须确保点晴OA中所用的数据库访问账号有权限访问其他数据库,点晴OA访问数据库的用户信息在根目录下:global.asa中可以看到,一般建议有跨数据库查询的需求时,优选采用数据库管理员账号sa,不要使用点晴OA预置账号clicksun。

不同服务器中跨服务器调用其他服务器数据库中某个表的数据:
需要先在OA服务器中创建一个到其他数据库的连接,以管理员身份进入点晴OA服务器,打开SQL Server管理器,执行以下存储过程建立到其他服务器的数据库连接:
/*不同服务器数据库之间的数据操作,创建链接服务器 */
exec sp_addlinkedserver   'OtherDB', ' ', 'SQLOLEDB', '192.168.*.**,1433';
exec sp_addlinkedsrvlogin  'OtherDB', 'false',null, 'sa', 'password';

以上SQL为在OA服务器上创建一个到其他数据库的连接:OtherDB,可以使用自定义的其他名称,用英文(不要用中文),192.168.*.** 可以为其他服务器的IP地址或域名,1433为服务端口,如果是1433则可以直接用IP不用逗号这个端口:“,1433”,如果使用其他端口,则需要改成相应端口号,下面这个为访问其他数据库的用户名及密码,将password改成相应密码即可。

然后就可以正常使用以下SQL来连接到其他服务器了:
select id as main_info, username as remark1, name as remark2, userdept as remark3, post_name as remark4, input_time as remark5, username as order_sort1, id as order_sort2 from OtherDB.other_db_name.dbo.userinf where username='$oabusyusername$'
参数解释:OtherDB (刚刚创建的其他服务器名称).other_db_name (其他服务器上数据库名称).dbo (就是dbo,必须保留).userinf  (要连接的数据表名称)
注意:跨服务器调用数据必须要先在SQL Server中对目标SQL服务器进行手工配置连接成功,必须确保点晴OA中所用的数据库访问账号有权限访问其他数据库,一般建议有跨服务器查询的需求时,优选采用数据库管理员账号sa,不要使用普通账号以免权限不足而无法通过检测。

以下命令可以查看上述存储过程是否执行成功:
select * from sys.servers;


删除这个数据库连接的方法为执行:
exec sp_dropserver  'OtherDB', 'droplogins';
没有特殊原因创建后不要删除这个连接,否则会导致上述SQL语句无法执行生效。

该评论在 2023/9/15 17:26:11 编辑过
admin
2015年5月5日 17:26

下面是一个主表绑定自定义SQL的例子:

1、先在自定义SQL中创建一个自定义数据源“姓名岗位”,可以调出点晴OA中用户姓名所在岗位,其中姓名会自动绑定到指定的文本控件,岗位会绑定到ID为CS23的文本控件,主字段在工作流模板中是检查人字段控件,CS23在工作流模板中是所在岗位字段控件:

2、在相应的工作流模板中设定要绑定自定义SQL的字段,下面为CS22检查人控件绑定数据来源“姓名岗位”,为防止用户自行录入内容,可以将CS22和CS23两个字段都设置为禁止录入,必须用自定义SQL数据源来填充:

3、在相应的工作流申请页面就可以使用这个自定义SQL数据源效果了:


注意看上面的检查人所在岗位字段,都是自定义SQL数据源自动填充的。


该评论在 2019/5/27 19:21:14 编辑过
admin
2015年6月9日 16:21
【学仙】点晴客服 2015-05-05 17:23:25
本功能可以实现点晴OA内部不同模块、甚至点晴OA与其他管理系统的数据自动调用
这个功能用好了会十分的方便

【学神】mar 2015-05-05 17:23:24
在慢慢研究你们的这个功能

【学神】mar 2015-05-05 17:23:26
哈哈

【学仙】点晴客服 2015-05-05 17:24:23
后面还有那个用户身份识别的宏变量,也很有用的,对于自动调取数据时自动过滤为当前申请人的相关信息很有帮助

【学神】mar 2015-05-05 17:24:55
嗯 ,这个很有用

【学弱】Fairy     2015-06-09 15:47:58
怎样自定义SQL格式?在哪
工作流模板中 想要在OA中调出客户名称

【学仙】点晴客服 2015-06-09 15:52:25
http://workflow.oa22.cn
工作流数据来源设置及自定义SQL格式说明
/mis/bbs/showbbs.asp?id=8368

【学弱】Fairy     2015-06-09 15:55:02
这2个网页我都看了
不是怎么编,我想问在哪编
我现在做了一个模板,客户名称想要调取OA客户关系管理中的,,我现在在这个模板的那个位置定义这个SQL呢,,初学者,麻烦了
哪个位置?

【学仙】点晴客服 2015-06-09 16:01:20
 

该评论在 2019/5/27 19:07:11 编辑过
关键字查询
相关文章
正在查询...
点晴ERP是一款针对中小制造业的专业生产管理软件系统,系统成熟度和易用性得到了国内大量中小企业的青睐。
点晴PMS码头管理系统主要针对港口码头集装箱与散货日常运作、调度、堆场、车队、财务费用、相关报表等业务管理,结合码头的业务特点,围绕调度、堆场作业而开发的。集技术的先进性、管理的有效性于一体,是物流码头及其他港口类企业的高效ERP管理信息系统。
点晴WMS仓储管理系统提供了货物产品管理,销售管理,采购管理,仓储管理,仓库管理,保质期管理,货位管理,库位管理,生产管理,WMS管理系统,标签打印,条形码,二维码管理,批号管理软件。
点晴免费OA是一款软件和通用服务都免费,不限功能、不限时间、不限用户的免费OA协同办公管理系统。
Copyright 2010-2024 ClickSun All Rights Reserved