Foxtable(狐表)用户栏目专家坐堂 → 审批记录


  共有3866人关注过本帖树形打印复制链接

主题:审批记录

帅哥哟,离线,有人找我吗?
lisangyu
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:一尾狐 帖子:461 积分:4295 威望:0 精华:0 注册:2019/8/5 17:49:00
审批记录  发帖心情 Post By:2020/3/24 15:07:00 [显示全部帖子]


图片点击可在新窗口打开查看此主题相关图片如下:qq截图20200324150403.jpg
图片点击可在新窗口打开查看
蓝老师:怎么保存图中的审批记录,退回后表单中的审批记录就会被清空。是再建一个表保存指定字段的内容,怎么在对应表单中调阅审批记录

 回到顶部
帅哥哟,离线,有人找我吗?
lisangyu
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:一尾狐 帖子:461 积分:4295 威望:0 精华:0 注册:2019/8/5 17:49:00
  发帖心情 Post By:2020/3/24 16:25:00 [显示全部帖子]

蓝老师,有没有实例?

 回到顶部
帅哥哟,离线,有人找我吗?
lisangyu
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:一尾狐 帖子:461 积分:4295 威望:0 精华:0 注册:2019/8/5 17:49:00
  发帖心情 Post By:2020/3/25 13:48:00 [显示全部帖子]

蓝老师:我借鉴了论坛里您以前发的操作日志的实列。代码如下:

If e.DataTable.Name <> "数据操作日志" Then
    If e.DataRow.RowState = 2 Then
        Return
    Else
        Dim dr As DataRow = DataTables("数据操作日志").AddNew
        dr("ID") = e.DataRow("_Identify")
        dr("用户") = User.Name
        dr("涉及表") = e.DataTable.Name
        dr("涉及列") = e.DataCol.Name
        dr("涉及行") = e.DataRow("_Identify")
        dr("时间") = Date.Now
        dr("操作") = """" & e.OldValue &  """ 改成了 """ & e.NewValue & """"       
    End If
End If
是能记录流程的操作日志

此主题相关图片如下:qq截图20200325133650.png
按此在新窗口浏览图片
然后我在审批界面加了一个进度调用“数据操作日志”表,作为申请审批的进度日志。
现在我只要表为“车辆维修申请单”中“审批意见1”、“审批结果1”、“审批意见2”、“审批结果2”····的变化记录
在调用的界面中再加入筛选 代码
Dim Filter As String
Filter = " 涉及表 = '车辆维修申请表' And ID = 'e.DataRow("_Identify")'"
DataTables("数据操作日志").LoadFilter = Filter
DataTables("数据操作日志").Load()
代码不对,麻烦指导下。
涉及表=当前表名,ID=当前行 的ID,涉及列=“审批结果1”及“审批意见1”、“审批意见2”、“审批结果2”、、、、


 回到顶部
帅哥哟,离线,有人找我吗?
lisangyu
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:一尾狐 帖子:461 积分:4295 威望:0 精华:0 注册:2019/8/5 17:49:00
  发帖心情 Post By:2020/3/26 10:07:00 [显示全部帖子]

一、蓝老师:我加了代码筛选,调用副本表时,table表显示不全,把代码去掉,table表显示就完整了。
Dim Filter As String
Filter = " 涉及表 = '车辆维修申请表' And ID = '" &tables("车辆维修申请表").Current("_Identify")&"' And 涉及列 In ('审批结果1','审批意见1','审批结果2','审批意见2','审批结果3','审批意见3','审批结果4','审批意见4','审批结果5','审批意见5','厂家填写','审批人7')"
DataTables("数据操作日志").LoadFilter = Filter
DataTables("数据操作日志").Load()

图片点击可在新窗口打开查看此主题相关图片如下:qq截图20200326095557.jpg
图片点击可在新窗口打开查看

二、流程审批控制的代码以前是放在datacolchanged里,后来我发现效率不高,我把控制代码直接放到窗口按钮里,并改了部分代码。如下:
Dim dr As Row = Tables("车辆维修申请表").Current
If dr IsNot Nothing Then
If dr("所属部门") <> "行政管理部"
    If dr.IsNull("审批结果1") = False AndAlso dr.IsNull("审批人1") = False Then
        dr("进度") = "2A"
        If dr.IsNull("审批结果2") = False AndAlso dr.IsNull("审批人2") = False Then
            dr("进度") = "3A"
            If dr.IsNull("审批结果3") = False AndAlso dr.IsNull("审批人3") = False Then
                dr("进度") = "4A"
                If dr.IsNull("审批结果4") = False AndAlso dr.IsNull("审批人4") = False Then
                    dr("进度") = "5A"
                    If dr.IsNull("审批结果5") = False AndAlso dr.IsNull("审批人5") = False
                        Dim us As UserInfo = Users(dr("维修厂"))
                        If  us.IsRole("维修厂审核员") Then
                            dr("进度") = "6A"
                        Else
                            dr("进度") = "7A"
                            If dr.IsNull("审批人7") = False AndAlso dr.IsNull("维修金额") = False Then
                                dr("进度") = "8A"
                            End If
                        End If
                        If dr.IsNull("审批人6") = False AndAlso dr.IsNull("审批日期6") = False Then
                            dr("进度") = "7A"
                            If dr.IsNull("审批人7") = False AndAlso dr.IsNull("维修金额") = False Then
                                dr("进度") = "8A"
                             End If   
                            End If
                        End If
                    End If
                End If
                
            End If
        End If
    End If
    
Else
    If dr.IsNull("审批结果1") = False AndAlso dr.IsNull("审批人1") = False Then
        dr("进度") = "4A"
        
        If dr.IsNull("审批结果4") = False AndAlso dr.IsNull("审批人4") = False Then
            dr("进度") = "5A"
            If dr.IsNull("审批结果5") = False AndAlso dr.IsNull("审批人5") = False
                Dim us As UserInfo = Users(dr("维修厂"))
                If  us.IsRole("维修厂审核员") Then
                    dr("进度") = "6A"
                Else
                    dr("进度") = "7A"
                    If dr.IsNull("审批人7") = False AndAlso dr.IsNull("维修金额") = False Then
                        dr("进度") = "8A"
                    End If
                End If
                If dr.IsNull("审批人6") = False AndAlso dr.IsNull("审批日期6") = False Then
                    dr("进度") = "7A"
                    If dr.IsNull("审批人7") = False AndAlso dr.IsNull("维修金额") = False Then
                        dr("进度") = "8A"
                    End If
                End If
            End If
        End If
    End If
End If

现在当“所属部门”为“行政管理部”时,esle后面的代码不能执行。麻烦指导下那里有问题



 回到顶部
帅哥哟,离线,有人找我吗?
lisangyu
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:一尾狐 帖子:461 积分:4295 威望:0 精华:0 注册:2019/8/5 17:49:00
  发帖心情 Post By:2020/3/26 11:38:00 [显示全部帖子]


图片点击可在新窗口打开查看此主题相关图片如下:qq截图20200326113655.jpg
图片点击可在新窗口打开查看
msgbox(1) '这里能不能弹出  ,好像else后面都执行不了


 回到顶部
帅哥哟,离线,有人找我吗?
lisangyu
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:一尾狐 帖子:461 积分:4295 威望:0 精华:0 注册:2019/8/5 17:49:00
  发帖心情 Post By:2020/3/26 13:28:00 [显示全部帖子]

这个代码我肯定有问题,但是不知道哪里,我把current那行去掉也没有用。下面这个代码是放在table表datacolchanged里的是没有问题的
Select Case e.DataCol.Name
    Case "审批结果1","审批人1","审批结果2","审批人2","审批结果3","审批人3","审批结果4","审批人4","审批结果5","审批人5","审批人6","审批日期6","审批日期7","审批人7","维修厂","维修金额"
        Dim dr As DataRow = e.DataRow
        If dr("所属部门") <> "行政管理部"
            If dr.IsNull("审批结果1") = False AndAlso dr.IsNull("审批人1") = False Then
                e.DataRow("进度") = "2A"
                If dr.IsNull("审批结果2") = False AndAlso dr.IsNull("审批人2") = False Then
                    e.DataRow("进度") = "3A"
                    If dr.IsNull("审批结果3") = False AndAlso dr.IsNull("审批人3") = False Then
                        e.DataRow("进度") = "4A"
                        If dr.IsNull("审批结果4") = False AndAlso dr.IsNull("审批人4") = False Then
                            e.DataRow("进度") = "5A"
                            If dr.IsNull("审批结果5") = False AndAlso dr.IsNull("审批人5") = False
                                Dim us As UserInfo = Users(dr("维修厂"))
                                If  us.IsRole("维修厂审核员") Then
                                    e.DataRow("进度") = "6A"
                                Else
                                    e.DataRow("进度") = "7A"
                                    If dr.IsNull("审批人7") = False AndAlso dr.IsNull("维修金额") = False Then
                                        e.DataRow("进度") = "8A"
                                    End If
                                End If
                                If dr.IsNull("审批人6") = False AndAlso dr.IsNull("审批日期6") = False Then
                                    e.DataRow("进度") = "7A"
                                    If dr.IsNull("审批人7") = False AndAlso dr.IsNull("维修金额") = False Then
                                        e.DataRow("进度") = "8A"
                                        
                                    End If
                                End If
                            End If
                        End If
                        
                    End If
                End If
            End If
            
        Else
            If dr.IsNull("审批结果1") = False AndAlso dr.IsNull("审批人1") = False Then
                e.DataRow("进度") = "4A"
                
                If dr.IsNull("审批结果4") = False AndAlso dr.IsNull("审批人4") = False Then
                    e.DataRow("进度") = "5A"
                    If dr.IsNull("审批结果5") = False AndAlso dr.IsNull("审批人5") = False
                        Dim us As UserInfo = Users(dr("维修厂"))
                        If  us.IsRole("维修厂审核员") Then
                            e.DataRow("进度") = "6A"
                        Else
                            e.DataRow("进度") = "7A"
                            If dr.IsNull("审批人7") = False AndAlso dr.IsNull("维修金额") = False Then
                                e.DataRow("进度") = "8A"
                            End If
                        End If
                        If dr.IsNull("审批人6") = False AndAlso dr.IsNull("审批日期6") = False Then
                            e.DataRow("进度") = "7A"
                            If dr.IsNull("审批人7") = False AndAlso dr.IsNull("维修金额") = False Then
                                e.DataRow("进度") = "8A"
                            End If
                        End If
                    End If
                End If
            End If
        End If
End Select


麻烦看下,之前那个代码要怎么改?


 回到顶部
帅哥哟,离线,有人找我吗?
lisangyu
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:一尾狐 帖子:461 积分:4295 威望:0 精华:0 注册:2019/8/5 17:49:00
  发帖心情 Post By:2020/3/26 17:17:00 [显示全部帖子]

蓝老师:我把副本表换成sqltable,原来的筛选失效了,下面的代码要怎么优化?

Dim Filter As String
Filter = " 涉及表 = '车辆维修申请表' And ID = '" &tables("车辆维修申请表").Current("_Identify")&"' And 涉及列 In ('审批结果1','审批意见1','审批结果2','审批意见2','审批结果3','审批意见3','审批结果4','审批意见4','审批结果5','审批意见5','厂家填写','审批人7')"
DataTables("数据操作日志").LoadFilter = Filter
DataTables("数据操作日志").Load()

 回到顶部
帅哥哟,离线,有人找我吗?
lisangyu
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:一尾狐 帖子:461 积分:4295 威望:0 精华:0 注册:2019/8/5 17:49:00
  发帖心情 Post By:2020/3/28 11:22:00 [显示全部帖子]

蓝总:数据操作日志里
        dr("ID") = e.DataRow("_Identify") 表中的ID是记录变化行的_Identify,但是我在进度窗口提取”数据操作日志“时按" 涉及表 = '车辆维修申请表' And ID = '" &tables("车辆维修申请表").Current("_Identify")&"' 筛选,测试中出现车辆维修申请表当前行对应的操作记录中出现其他行的记录,前面两个_Identify是同一个编号吗?



 回到顶部
帅哥哟,离线,有人找我吗?
lisangyu
  9楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:一尾狐 帖子:461 积分:4295 威望:0 精华:0 注册:2019/8/5 17:49:00
  发帖心情 Post By:2020/3/28 14:19:00 [显示全部帖子]

蓝总:您好!
If e.DataCol.Name = "日期" Then
    If e.DataRow.IsNull("日期") Then
        e.DataRow(
"
编号") = Nothing
    Else
        Dim d As Date = e.DataRow(
"
日期")
        Dim y As Integer = d.Year
        Dim m As Integer = d.Month
        Dim Days As Integer = Date.DaysInMonth(y,m)
        Dim fd As Date = New Date(y,m,1)
'
获得该月的第一天
        Dim ld As Date = New Date(y,m,Days)
'
获得该月的最后一天
       
Dim bh As String = Format(d,"yyyyMM") '生成编号的前6位,4位年,2位月.
        If e.DataRow("编号").StartsWith(bh) = False '如果编号的前6位不符
            Dim max As String
            Dim idx As Integer
            max = e.DataTable.Compute("Max(编号)","日期 > = #" & fd & "# And 日期 <= #" & ld & "# And [_Identify] <> " & e.DataRow("_Identify")) '取得该月的最大编号
            If max > "" Then '如果存在最大编号
                idx = CInt(max.Substring(7,3)) + 1 '获得最大编号的后三位顺序号,并加1
            Else
                idx = 1 '否则顺序号等于1
            End If
            e.DataRow("编号") = bh & "-" & Format(idx,"000")
        End If
    End
If

End If


1、为什么我发起3条记录的编号都是一样的,202003-001?
2、Sqltable生成的表中的时间是不是不能带上datatime效果?


[此贴子已经被作者于2020/3/28 15:00:28编辑过]

 回到顶部