以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  对比两个表,并标记出不同  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=88797)

--  作者:zhangning
--  发布时间:2016/8/9 17:23:00
--  对比两个表,并标记出不同
有两个表,一个是“出勤相关”,

图片点击可在新窗口打开查看此主题相关图片如下:9.png
图片点击可在新窗口打开查看

一个是“考勤机”

图片点击可在新窗口打开查看此主题相关图片如下:8.png
图片点击可在新窗口打开查看

想让两个表进行对比,对比列是:

图片点击可在新窗口打开查看此主题相关图片如下:10.png
图片点击可在新窗口打开查看

事先设置好样式,名称为“差异”

想达到的效果是,对同一人,同一日期,的要对比的列进行对比,有差异的,执行“差异”样式,进行标记,

请问老师,如何才能达到如何效果?代码怎么写?

--  作者:zhangning
--  发布时间:2016/8/9 17:27:00
--  
差异直接在两个表中都需要显现
[此贴子已经被作者于2016/8/9 17:37:15编辑过]

--  作者:大红袍
--  发布时间:2016/8/9 17:33:00
--  
 实例上传上来。
--  作者:zhangning
--  发布时间:2016/8/10 8:06:00
--  
管理者   密码:qdrA001
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:人事管理 - 副本.zip



--  作者:Hyphen
--  发布时间:2016/8/10 9:02:00
--  
出勤相关drawcell

If e.Row.IsNull("日期") = False Then
    
    Dim d As Date = e.Row("日期")
    
    If d.DayOfWeek = 0 OrElse d.DayOfWeek = 6 Then
        e.style = "周六日"
    End If
    If e.Row.IsNull("当事人") = False Then
        Dim dr As DataRow = DataTables("考勤机").Find(CExp("姓名=\'{0}\' and 日期 = #{1}#",e.Row("当事人"),e.Row("日期") ))
        If dr IsNot Nothing AndAlso dr("一倍半加班H") <> e.Row("一倍半加班H") Then
            e.Style = "差异"
        End If
    End If
End If

考勤机drawcell

If e.Row.IsNull("日期") = False Then
    
    Dim d As Date = e.Row("日期")
    
    If d.DayOfWeek = 0 OrElse d.DayOfWeek = 6 Then
        e.style = "周六日"
    End If
    If e.Row.IsNull("姓名") = False Then
        Dim dr As DataRow = DataTables("出勤相关").Find(CExp("当事人=\'{0}\' and 日期 = #{1}#",e.Row("姓名"),e.Row("日期") ))
        If dr IsNot Nothing AndAlso dr("一倍半加班H") <> e.Row("一倍半加班H") Then
            e.Style = "差异"
        End If
    End If
End If

--  作者:zhangning
--  发布时间:2016/8/10 9:49:00
--  
老师,操作后没有反应,不知问题出在哪里了
--  作者:大红袍
--  发布时间:2016/8/10 9:51:00
--  

你要添加样式

 

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

 


--  作者:zhangning
--  发布时间:2016/8/10 10:26:00
--  
老师,已经提前设置好了“周六日”和“差异”样式了。
--  作者:大红袍
--  发布时间:2016/8/10 10:55:00
--  
Dim ary() As String = {"一倍半加班H", "二倍加班H", "三倍加班H"}
If array.Indexof(ary, e.Col.name) >= 0 Then
    If e.Row.IsNull("日期") = False AndAlso e.Row.IsNull("当事人") = False Then
        Dim dr As DataRow = DataTables("考勤机").Find(CExp("姓名=\'{0}\' and 日期 = #{1}#",e.Row("当事人"),e.Row("日期") ))
        If dr IsNot Nothing Then           
            If dr(e.Col.name) <> e.Row(e.Col.name) Then
                e.Style = "差异"
            End If
        End If
    End If
End If

--  作者:zhangning
--  发布时间:2016/8/13 12:01:00
--  
老师,这个很好用,但只限于 两个表都 某天某人都有的时才起作用,
如何在如果一个表中没有,一个表中有,在有的那个表中将整行都标注样式呢?