Foxtable(狐表)用户栏目专家坐堂 → 关于StateFilter的咨询


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

主题:关于StateFilter的咨询

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


加好友 发短信
等级:小狐 帖子:362 积分:3190 威望:0 精华:1 注册:2011/4/20 1:40:00
关于StateFilter的咨询  发帖心情 Post By:2011/11/25 20:21:00 [显示全部帖子]

可否解释一下这三者的区别?

StateFilter

 

Modified :          显示已经修改的行

Original:           原始视图
ModifiedOriginal:   原始视图(仅修改行)

 

 


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


加好友 发短信
等级:小狐 帖子:362 积分:3190 威望:0 精华:1 注册:2011/4/20 1:40:00
  发帖心情 Post By:2011/11/25 22:16:00 [显示全部帖子]

modifiedoriginal:是显示修改的行的原始视图。

清楚了。

还有一个问题:怎么筛选出新增、修改过两种状态的行?就是同时显示两种状态的行。


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


加好友 发短信
等级:小狐 帖子:362 积分:3190 威望:0 精华:1 注册:2011/4/20 1:40:00
  发帖心情 Post By:2011/11/26 2:05:00 [显示全部帖子]

联通网速慢,不传表了,大家请:

 

1、新建一个表;

2、然后随便在某个单元格中填些内容,使其中的一两行变成已修改状态;

3、再新增一行;

4、打开命令窗口;

5、输入:“CurrentTable.StateFilter = StateFilterEnum.Added Or StateFilterEnum.Modified

结果显示未修改过的行,可原意是想筛选显示出新增和修改过的行,该怎么写才正确。

 

 

 另外,请问一下,新增行(未保存)是不是没有"OriginalValue"值?


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


加好友 发短信
等级:小狐 帖子:362 积分:3190 威望:0 精华:1 注册:2011/4/20 1:40:00
  发帖心情 Post By:2011/11/26 23:02:00 [显示全部帖子]

1、新建一个表,默认是有十行;

2、在其中的任意两行输入点内容,此时行状态会变成已修改状态;

3、打开命令窗口,输入以下内容,筛选出处于修改状态的行;

 

CurrentTable.StateFilter = StateFilterEnum.Modified
Dim i As Integer = 0
For Each dr As DataRow In DataTables(CurrentTable.Name).DataRows
    i=i + 1
    output.Show(i)
Next

CurrentTable.StateFilter = StateFilterEnum.Default

 

按照我的起初理解,十行中我修改了两行,所以显示了两行,历遍所有行后。待会i的值应该是2才对,可实际上不是,还是10。看来StateFilter只是显示两行,实际还是有十行数据,打个比方,假如有十几万行的内容,需要从中找出已修改过的行的一些信息,难道需要把这十几万行都历经一遍或是判断一遍是否修改行的状态吗?这行效率应该会较低呀。

 

加了判断的代码:

 

CurrentTable.StateFilter = StateFilterEnum.Modified
Dim i As Integer = 0
For Each dr As DataRow In DataTables(CurrentTable.Name).DataRows
    If dr.RowState = DataRowState.Modified
        i=i + 1
       output.Show(i)
    End If
Next

CurrentTable.StateFilter = StateFilterEnum.Default

 

 

有什么方法可以让筛选出修改行后,让For each -----next 这样的语句只对应状态为修改过行的数量,而不是所有数据库里的行呀?

而且最好是当前表的视图不要有任何的变化,就是不要出现筛选后再还原的情况,数据量大时可能会一闪一闪的。

[此贴子已经被作者于2011-11-26 23:17:35编辑过]

 回到顶部