以文本方式查看主题
- Foxtable(狐表) (http://foxtable.net/bbs/index.asp)
-- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2)
---- 审批流程设计相关 (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=147514)
|
-- 作者:cd_tdh
-- 发布时间:2020/3/18 15:14:00
-- 审批流程设计相关
老师,我有个审核流程表,结构如下:
此主题相关图片如下:qq截图20200318150427.png
有个测试表,表中有个审批状态列,提交审批后,审批状态 = 审批流程表中的“提交申请状态”
我想做一个通用审批窗口,每次执行审批时,先根据“测试表”中的审批状态,在审批流程表中找到对应的流程,审批完,“测试表”中的审批状态就等于对应审批流程的状态。直到审批状态为审批完成,请老师指教一下应该怎么写通用的“审核窗口”中通过的按钮代码。
[此贴子已经被作者于2020/3/18 17:19:13编辑过]
|
-- 作者:有点蓝
-- 发布时间:2020/3/18 15:52:00
--
这种表结构我表示无能为力。
建议把流程表改为竖表存储流程: 如表结构:表名、状态,审核人角色、序号 存储的数据如: 测试表、状态1、员工1,1 测试表、状态2、员工2,2 测试表、状态3、经理1,3 测试表、状态4、经理2,4
这样查询的时候,比如测试表当前状态为【状态2】,那么就可以查询到流程表中表名为“测试表”,状态=状态2的序号为2,就很容易知道下一步就是序号3,审核按钮把测试表改为【状态3】即可。使用find只需要2步查询就能知道下一步是什么状态,如果使用sql只需要一步就能获取下一步状态
|
-- 作者:cd_tdh
-- 发布时间:2020/3/18 15:58:00
--
好的,谢谢老师,我改为竖表试试,不会再请教。
[此贴子已经被作者于2020/3/18 15:57:58编辑过]
|
-- 作者:cd_tdh
-- 发布时间:2020/3/18 17:17:00
--
老师,表结构我修改了,请老师看看。这个流程我弄完了分享出来,论坛这方面太少了,会做的都不愿意分享出来。
[此贴子已经被作者于2020/3/26 9:51:35编辑过]
|
-- 作者:有点蓝
-- 发布时间:2020/3/18 17:28:00
--
1、根据需要审核的行,获取表名和这一行的状态2、根据表名和状态到流程表查询下一步流程的状态名称 3、把需要审核的行的状态改为上面查询的结果
|
-- 作者:yuweijie
-- 发布时间:2020/3/18 22:22:00
--
看看
|
-- 作者:cd_tdh
-- 发布时间:2020/3/19 8:44:00
--
老师,下一步的流程状态怎么写呢?
Dim dr As Row = Tables(vars("editTable")).Current Dim ds As DataRow = DataTables("审核流程表").SQLFind("表名称 = \'"& vars("editTable")&"\'") \'找出编号为03的产品 If ds IsNot Nothing Then \'如果找到的话
If dr("审批状态") = ds("审核状态") Then If _UserPost = ds("二级审核") Then msgbox(_UserPost) Dim dw As Row = Tables("审核意见表").AddNew() dw("表名称")= vars("editTable") dw("审核部门")= _UserGroup dw("审核人")= _UserXingMing dw("审核日期")= Date.Now dw("审核意见")= e.Form.Controls("TextBox1").text dw("ID")= dr("ID") dr("审批状态") = ds("二级审核状态") Else MessageBox.Show("你没有审核资格","提示",MessageBoxButtons.OK,MessageBoxIcon.Warning) e.Cancel = True End If End If Else MessageBox.Show("该表未加入审批流程,请给管理员联系","提示",MessageBoxButtons.OK,MessageBoxIcon.Warning) e.Cancel = True End If
|
-- 作者:chen37280600
-- 发布时间:2020/3/19 9:27:00
--
流程设计,如果简单的一步审批,那就业务表一个字段行了。
1但是如果流程步骤多,就应该把流程跟业务表分离。用一个表,专门存审批。如果你这样横向扩展,就会导致非常多的重复字段。而且当你流程退回重审时,无法保留之前的审批日志 2如果审批中涉及到对其他表的大量操作,记得开数据库事务。因为执行时间长,客户很可能执行到一半把软件强制关了!
此主题相关图片如下:2.png
此主题相关图片如下:3.png
此主题相关图片如下:4.png
|
-- 作者:有点蓝
-- 发布时间:2020/3/19 10:13:00
--
7楼的代码都没有做任何的改动,还是照搬1楼的。
1、根据需要审核的行,获取表名和这一行的状态 Dim dr As Row = Tables(vars("editTable")).Current Dim ds As DataRow = DataTables("审核流程表").SQLFind("表名称 = \'"& vars("editTable")&"\' and 审核状态=\'" & dr("审批状态") & "\'") 2、根据表名和状态到流程表查询下一步流程的状态名称 Dim dr2 As DataRow = DataTables("审核流程表").SQLFind("表名称 = \'"& vars("editTable")&"\' and 流程编号> \'" & ds("流程编号") & "\'" ,"流程编号") 3、把需要审核的行的状态改为上面查询的结果 dr("审批状态") = dr2("审核状态")
|
-- 作者:cd_tdh
-- 发布时间:2020/3/23 16:16:00
--
此主题相关图片如下:qq截图20200323161518.png
请老师指导一下这个表这样设计有没优化的地方?
|