Foxtable(狐表)用户栏目专家坐堂 → 如何筛选出刚修改过的单元格


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

主题:如何筛选出刚修改过的单元格

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


加好友 发短信
等级:二尾狐 帖子:555 积分:5037 威望:0 精华:0 注册:2012/2/11 13:27:00
如何筛选出刚修改过的单元格  发帖心情 Post By:2015/12/2 16:41:00 [只看该作者]

说明书内容:修改订单数据后,按下菜单中的标记按钮,即可以红底白字标出所有已经修改过的单元格:


已知某个表的列 有 :  客户 单价 折扣

每一列中 都有记录发生了修改


1、筛选出 客户列中有变化的记录


2、筛选出无论哪列有变化及作为有变化的记录


我想,既然系统能测出哪些个单元格是刚被修改ud,就一定能筛选出来。请教 如何书写代码

[此贴子已经被作者于2015/12/2 16:45:02编辑过]

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


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2015/12/2 16:45:00 [只看该作者]

MarkModifedCell = true
Tables("表A").Refresh

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


加好友 发短信
等级:二尾狐 帖子:555 积分:5037 威望:0 精华:0 注册:2012/2/11 13:27:00
  发帖心情 Post By:2015/12/2 16:48:00 [只看该作者]

我要分两种,一种是针对某一列中有变化的,二是针对所有列 有变化 的,帮助文档中找不到 这个代码的用法,请问怎么写?

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


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2015/12/2 16:53:00 [只看该作者]

drawcell事件

 

If e.Col.name = "第二列" Then
    If e.Row(e.Col.name) <> e.Row.DataRow.OriginalValue(e.Col.name) Then
        e.Table.DataTable.AddUserStyle("修改了", Color.Red, Color.black)
        e.style = "修改了"
    End If
End If


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


加好友 发短信
等级:二尾狐 帖子:555 积分:5037 威望:0 精华:0 注册:2012/2/11 13:27:00
  发帖心情 Post By:2015/12/2 17:05:00 [只看该作者]

大红袍老师,可能我表达的意思错了,我要的是筛选,不是标志颜色

就是类似下面这个表达式中的条件,如何针对已经 修改过内容的做个筛选:
Tables("职工表").Filter= "                '"     '筛选显示

一种是 筛选出 客户 列有变化的记录
二种是筛选出 客户 单价 折扣 列中至少一个列变化的记录
[此贴子已经被作者于2015/12/2 17:08:06编辑过]

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


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2015/12/2 17:11:00 [只看该作者]

参考

 

Dim idx As String = "-1,"
For Each dr As DataRow In DataTables("表A").datarows
    If dr("第二列") <> dr.OriginalValue("第二列") Then
        idx &= dr("_Identify") & ","
    End If
Next

Tables("表A").Filter = "_Identify in (" & idx.trim(",") & ")"


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


加好友 发短信
等级:二尾狐 帖子:555 积分:5037 威望:0 精华:0 注册:2012/2/11 13:27:00
  发帖心情 Post By:2015/12/2 22:42:00 [只看该作者]

上面是能筛选出[第二列]中有数据变动的记录

如果要筛选所有列有数据变动的记录,我用了下列代码:

Dim idx As String = "-1,"
For Each dr As DataRow In DataTables("职工表").datarows
    For Each dc As DataCol In DataTables("职工表").DataCols
        If dr(dc.Name) <> dr.OriginalValue(dc.Name) Then
            idx &= dr("_Identify") & ","
        End If
    Next
Next
Tables("职工表").Filter = "_Identify in (" & idx.trim(",") & ")"

请教大红袍老师,这样对不对呢?

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


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2015/12/2 22:45:00 [只看该作者]

Dim idx As String = "-1,"
For Each dr As DataRow In DataTables("表A").datarows
    For Each dc As DataCol In DataTables("表A").DataCols
        If dr(dc.Name) <> dr.OriginalValue(dc.Name) Then
            idx &= dr("_Identify") & ","
            Exit For
        End If
    Next
Next

Tables("表A").Filter = "_Identify in (" & idx.trim(",") & ")"


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


加好友 发短信
等级:二尾狐 帖子:555 积分:5037 威望:0 精华:0 注册:2012/2/11 13:27:00
  发帖心情 Post By:2015/12/2 23:52:00 [只看该作者]

Exit For  表示不再遍列该行中后面其他的列了,是不是?

[此贴子已经被作者于2015/12/2 23:58:14编辑过]

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


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2015/12/3 0:05:00 [只看该作者]

是的,一行,只要有一列修改了,其余的就没必要继续循环。

 回到顶部
总数 12 1 2 下一页