以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  工作流,经理审核后,到上级副总批准  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=88784)

--  作者:misamisali
--  发布时间:2016/8/9 15:44:00
--  工作流,经理审核后,到上级副总批准
前提:
1、已经完成OpenQQ客户端,能正常发信息。
2、已经按版主说的用递归函数做了用户上下级表,如图用户表,是不是正确的。
3、我想实现的功能是如图:
   1)筛选出一个部门的考勤记录,部门经理审核(已实现),保存按钮(失败),保存后,审核人的记录在下次又是空白的,什么原因?
保存:
Dim r As Row = Tables("考勤统计表").Current
Dim p As String = IIF(r.DataRow.RowState = DataRowState.Added, "A#", "U#")
r.Save()
\'一定要在保存后合成信息,因为新增行的主键在保存后才生成
Dim msg As String = p & "表A" & "#" & r("_Identify")
For Each bd As QQBuddy In QQClient.Buddies
    If bd.Online Then
        QQClient.Send(bd.name, msg)
    End If
Next

   2)通知分管副总理代码:

将ReceivedMessage设置

Dim msg As String = e.Message
Dim
 dr As DataRow
If
 msg.StartsWith("U#"Then \'表示修改了某行
    Dim pts() As String = msg.Split("#")
    If pts.Length = 3 Then
        dr = DataTables(pts(1)).Find("[_Identify] = " & pts(2))
        If dr IsNot Nothing  Then
            dr.Load() 
\'
重新加载此行
        End If
    End 
If

ElseIf
 msg.StartsWith("A#"Then \'表示增加了行
    Dim pts() As String = msg.Split("#")
    If pts.Length = 3 Then
        Dim drs As List(of DataRow) = DataTables(pts(1)).AppendLoad("[_Identify] = " &  pts(2)) 
\'
追载新增加的行.
        If drs.Count > 0 Then
            dr = drs(0)
        End If
    End 
If

ElseIf
 msg.StartsWith("D#"Then \'表示删除了行
    Dim pts() As String = msg.Split("#")
    If pts.Length = 3 Then
        DataTables(pts(1)).RemoveFor("[_Identify] = "  & pts(2)) 
\'
移除行
    End 
If

End
 If
If
 User.Group = "副总" And dr.DataTable.Name = "考勤统计表"  Then
    If dr IsNot Nothing AndAlso dr.IsNull(
"
审核") = False AndAlso dr.IsNull("批准"Then
        
PopMessage("有新的考勤需要审核!","提示",PopIconEnum.Infomation)
    End 
If

End
 If


执行后,副总未收到提示信息?请问我代码要怎么改?


[此贴子已经被作者于2016/8/9 15:44:40编辑过]

--  作者:大红袍
--  发布时间:2016/8/9 15:50:00
--  

1、看看

 

http://www.foxtable.com/webhelp/scr/1380.htm

 

2、加入代码,看弹出什么

 

msgbox(dr is nothing)

msgbox(user.Group)

msgbox(dr.DataTable.Name)


--  作者:misamisali
--  发布时间:2016/8/9 16:00:00
--  
1、保存还是无用: 审核人,保存后,下次打开又是空白~,字符型  
2、代码修改后,出现错误,如图

--  作者:大红袍
--  发布时间:2016/8/9 16:02:00
--  

 1、不要用表达式列啊

 

 2、在后面加上代码

 

msgbox(dr is nothing)

msgbox(user.Group)


--  作者:misamisali
--  发布时间:2016/8/9 16:11:00
--  
1、不是表达式,  普通列,见图1
2、还是显示同样的错误

--  作者:大红袍
--  发布时间:2016/8/9 16:30:00
--  
 上传实例啊。
--  作者:misamisali
--  发布时间:2016/8/9 16:45:00
--  
我就是想实现像http://www.foxtable.com/webhelp/index.htm?page=3054.htm  案例的,
由部门经理审核——通知——分管副总,分管副总审核——通知考勤统计员“黄**
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:人力资源系统7-12.zip


--  作者:大红袍
--  发布时间:2016/8/9 16:50:00
--  
 服务器端的程序发上来啊。
--  作者:misamisali
--  发布时间:2016/8/9 16:56:00
--  
不好意思
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:qq服务器.zip


--  作者:大红袍
--  发布时间:2016/8/9 17:24:00
--  

1、你的审核列,明明就是表达式列啊。改成数据列啊

 

2、

 

Dim r As Row = Tables("考勤统计表").Current
Dim p As String = IIF(r.DataRow.RowState = DataRowState.Added, "A#", "U#")
r.Save()
\'一定要在保存后合成信息,因为新增行的主键在保存后才生成
Dim msg As String = p & r.Table.DataTable.name & "#" & r("_Identify")
For Each bd As QQBuddy In QQClient.Buddies
    If bd.Online Then
        QQClient.Send(bd.name, msg)
    End If
Next

 

--------------------------------

 

Dim msg As String = e.Message
Dim dr As DataRow
If msg.StartsWith("U#") Then \'表示修改了某行
    Dim pts() As String = msg.Split("#")
    If pts.Length = 3 Then
        dr = DataTables(pts(1)).Find("[_Identify] = " & pts(2))
        If dr IsNot Nothing  Then
            dr.Load() \'重新加载此行
        End If
    End If
ElseIf msg.StartsWith("A#") Then \'表示增加了行
    Dim pts() As String = msg.Split("#")
    If pts.Length = 3 Then
        Dim drs As List(of DataRow) = DataTables(pts(1)).AppendLoad("[_Identify] = " &  pts(2)) \'追载新增加的行.
        If drs.Count > 0 Then
            dr = drs(0)
        End If
    End If
ElseIf msg.StartsWith("D#") Then \'表示删除了行
    Dim pts() As String = msg.Split("#")
    If pts.Length = 3 Then
        DataTables(pts(1)).RemoveFor("[_Identify] = "  & pts(2)) \'移除行
    End If
End If


If QQClient.UserName.split(".")(0) = "副总" Then
msgbox(2)
    Dim pts() As String = msg.Split("#")
msgbox(pts(1))
    If pts.length = 3 AndAlso pts(1) = "考勤统计表" Then
        msgbox(dr("审核"))
        If dr IsNot Nothing AndAlso dr.IsNull("审核") = False AndAlso dr.IsNull("批准") Then
            PopMessage("有新的考勤需要审核!","提示",PopIconEnum.Infomation)
        End If
    End If
End If