Foxtable(狐表)用户栏目专家坐堂 → 对比两个表,并标记出不同


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

主题:对比两个表,并标记出不同

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


加好友 发短信
等级:狐神 帖子:5015 积分:25363 威望:0 精华:0 注册:2015/8/18 9:21:00
  发帖心情 Post By:2016/8/13 14:41: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
        Else
            e.Style = "差异"
        End If
    End If
End If

 回到顶部
美女呀,离线,留言给我吧!
zhangning
  12楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:二尾狐 帖子:513 积分:3355 威望:0 精华:0 注册:2016/4/14 16:56:00
  发帖心情 Post By:2017/9/15 14:26:00 [只看该作者]

以下是引用Hyphen在2016/8/13 14:41: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
        Else
            e.Style = "差异"
        End If
    End If
End If

老师,您好!上记红色部分麻烦老师给解释解释呗,特别是CEXP,和{0}{1},0和1代表的是什么?

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2017/9/15 14:41:00 [只看该作者]

就是为了动态合成条件。{0}、{1}是占位符,分别填入e.Row("当事人")、e.Row("日期")的值,最后合成 姓名='张三' and 日期 = #2017-09-15#"

 

 

[此贴子已经被作者于2017/9/15 14:41:23编辑过]

 回到顶部
美女呀,离线,留言给我吧!
zhangning
  14楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:二尾狐 帖子:513 积分:3355 威望:0 精华:0 注册:2016/4/14 16:56:00
  发帖心情 Post By:2017/9/15 14:55:00 [只看该作者]

老师,我仿照着写了以下代码,请老师帮斧正一下,谢谢!


Dim ary() As String = {"作业数量"}
If array.Indexof(ary, e.Col.name) >= 0 Then
    If e.Row.IsNull("作业piao") = False AndAlso e.Row.IsNull("工程") = False AndAlso e.Row.IsNull("项目略") = False AndAlso e.Row.IsNull("作业者") = False Then
        Dim dr As DataRow = DataTables("日清").Find(CExp("作业piao='{0}' and 工程='{1}' and 项目略='{2}' and 作业者='{3}',e.Row("作业piao"),e.Row("工程") ,e.Row("项目

略"),e.Row("作业者")))
        If dr IsNot Nothing Then
            If dr(e.Col.name) <> e.Row(e.Col.name) Then
                e.Style = "差异"
            End If
        Else
            e.Style = "差异"
        End If
    End If
End If


另外,还想加上,如一致,则列”两者一致“为TRUE,不会加,请老师帮帮忙,谢谢!


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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2017/9/15 15:22:00 [只看该作者]

Dim ary() As String = {"作业数量"}
If array.Indexof(ary, e.Col.name) >= 0 Then
    If e.Row.IsNull("作业piao") = False AndAlso e.Row.IsNull("工程") = False AndAlso e.Row.IsNull("项目略") = False AndAlso e.Row.IsNull("作业者") = False Then
        Dim dr As DataRow = DataTables("日清").Find(CExp("作业piao='{0}' and 工程='{1}' and 项目略='{2}' and 作业者='{3}'",e.Row("作业piao"),e.Row("工程") ,e.Row("项目略"),e.Row("作业者")))
        If dr IsNot Nothing Then
            If dr(e.Col.name) <> e.Row(e.Col.name) Then
                e.Style = "差异"
            End If
        Else
            e.Style = "差异"
        End If
    End If
End If

 回到顶部
美女呀,离线,留言给我吧!
zhangning
  16楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:二尾狐 帖子:513 积分:3355 威望:0 精华:0 注册:2016/4/14 16:56:00
  发帖心情 Post By:2017/9/15 15:30:00 [只看该作者]

谢谢老师,如要表达如有差异,则”两者一致“列为FALSE,
就将  e.Style = "差异    更换成  e.Row("两者一致") = False

在DATACOLCHANGED中,是不是有差异,”两者一致“列就为FALSE,一致的话,就是TRUE了呢?


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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2017/9/15 17:03:00 [只看该作者]

datacolchanged

 

Dim ary() As String = {"作业数量"}
If array.Indexof(ary, e.DataCol.name) >= 0 Then
    If e.DataRow.IsNull("作业piao") = False AndAlso e.DataRow.IsNull("工程") = False AndAlso e.DataRow.IsNull("项目略") = False AndAlso e.DataRow.IsNull("作业者") = False Then
        Dim dr As DataRow = DataTables("日清").Find(CExp("作业piao='{0}' and 工程='{1}' and 项目略='{2}' and 作业者='{3}'",e.DataRow("作业piao"),e.DataRow("工程") ,e.DataRow("项目略"),e.DataRow("作业者")))
        If dr IsNot Nothing Then
            If dr(e.DataCol.name) <> e.DataRow(e.DataCol.name) Then
                e.DataRow("两者一致") = False
            Else
                e.DataRow("两者一致") = True
            End If
        Else
            e.DataRow("两者一致") = False
        End If
    End If
End If


 回到顶部
总数 17 上一页 1 2