Foxtable(狐表)用户栏目专家坐堂 → 求行判定代码如何写(已解决)


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

主题:求行判定代码如何写(已解决)

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


加好友 发短信
等级:婴狐 帖子:20 积分:211 威望:0 精华:0 注册:2009/4/22 8:22:00
求行判定代码如何写(已解决)  发帖心情 Post By:2009/7/9 11:05:00 [只看该作者]

data表中有两数值列,AA和BB两列,AA列的数据是根据BB列的数据来判定处理的,
易表中的原公式:EvalFor("data","AA","if(Row=FirstRow,444, If(Cell(Row,""BB"") <>  Cell(Row+1,""BB""),444,If(Cell(Row,""BB"") <>  Cell(Row-1,""BB""),444,[AA])))")


data表

AA       BB       AA列判定后显示值
1        2              444
2        2              2
3        2              444
4        3              444
5        3              5
6        3              444
7        4              444
8        4              8
9        4              444
10       5              444
11       5              11
12       5              12
13       5              444
14       6              444
15       6              15
16       6              444


如果BB列是第一行,则AA列值更新为444;

如果BB列当前行的值不等于上一行的值,则AA列当前行值更新为444;

如果BB列当前行的值不等于下一行的值,则AA列当前行值更新为444;

否则保值AA列值不变。

[此贴子已经被作者于2009-7-9 16:43:40编辑过]

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


加好友 发短信
等级:管理员 帖子:47497 积分:251403 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2009/7/9 11:22:00 [只看该作者]

呵呵,你直接传一个表,输入数据多好。
否则要帮你,还得花时间建表输数据,麻烦。

图片点击可在新窗口打开查看


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


加好友 发短信
等级:婴狐 帖子:20 积分:211 威望:0 精华:0 注册:2009/4/22 8:22:00
  发帖心情 Post By:2009/7/9 11:33:00 [只看该作者]

代码在窗口按键中,


 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:test.table

[此贴子已经被作者于2009-7-9 14:11:39编辑过]

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


加好友 发短信
等级:管理员 帖子:47497 积分:251403 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2009/7/9 11:39:00 [只看该作者]

你传错了吧?
这个文件和一楼没有关系啊.
其实只需做一个一楼这样的表,输入一楼的数据和期望的结果即可.

此外,你给的条件:

如果BB列当前行的值不等于上一行的值,则AA列当前行值更新为444;

如果BB列当前行的值不等于下一行的值,则AA列当前行值更新为444;

何一楼给的判断结果并不符合.

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


加好友 发短信
等级:婴狐 帖子:20 积分:211 威望:0 精华:0 注册:2009/4/22 8:22:00
  发帖心情 Post By:2009/7/9 11:41:00 [只看该作者]

还有个问题想请教,我在窗口2中设置了一个定时器,想达到的效是:
1、自动定时读取指定文件夹下的所有文件,想当于侦听指定文件夹内是否有增加新的文件;
2、然后循环处理该文件夹下的文件,不停的更新,不停的处理数据文件,处理过后将数据保存到后台(现时代码还未写入)。


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


加好友 发短信
等级:婴狐 帖子:20 积分:211 威望:0 精华:0 注册:2009/4/22 8:22:00
  发帖心情 Post By:2009/7/9 11:45:00 [只看该作者]

其实是一样的,此上传文件中BB列就是一楼的AA列,BC列就是一楼的BB列而已,一楼的数据是我随便做的一个举例说明

上传的文件中是还未处理过的数据,

[此贴子已经被作者于2009-7-9 11:46:49编辑过]

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


加好友 发短信
等级:管理员 帖子:47497 积分:251403 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2009/7/9 11:56:00 [只看该作者]

以下是引用epilight在2009-7-9 11:41:00的发言:

还有个问题想请教,我在窗口2中设置了一个定时器,想达到的效是:
1、自动定时读取指定文件夹下的所有文件,想当于侦听指定文件夹内是否有增加新的文件;
2、然后循环处理该文件夹下的文件,不停的更新,不停的处理数据文件,处理过后将数据保存到后台(现时代码还未写入)。


基本思路,用一个静态变量,保存指定目录下的所有文件。
下次运行的时候,逐个文件判断是否是新增加的:

Static lst1 As List(Of String)
Dim lst2  As List(of String) = FileSys.GetFiles("C:\Data")
If lst1 IsNot Nothing Then
     For each file As String In Lst2
        if lst1.Contains(file) = False
          messagebox.show(File & "是新增加的")
        End If
End If
lst1 = lst2

注意定时器的时间不能太短,否则严重影响性能。

GetFiles

返回一个字符集合,该集合包括指定目录下的所有文件名。

语法:

GetFiles(directory)

directory: 指定的目录,获得该目录下所有的文件名。

例如列出C盘根目录下所有的文件名:

For Each File As String In FileSys.GetFiles("C:\")
    Output.Show(File)

Next


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


加好友 发短信
等级:婴狐 帖子:20 积分:211 威望:0 精华:0 注册:2009/4/22 8:22:00
  发帖心情 Post By:2009/7/9 12:56:00 [只看该作者]

重新上传一楼的例子
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:test.table


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


加好友 发短信
等级:婴狐 帖子:20 积分:211 威望:0 精华:0 注册:2009/4/22 8:22:00
  发帖心情 Post By:2009/7/9 14:14:00 [只看该作者]

有帮助的吗


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


加好友 发短信
等级:管理员 帖子:47497 积分:251403 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2009/7/9 15:21:00 [只看该作者]

做一个按钮:


With Tables("data")
    .Rows(0)("AA") = 444
    .Rows(.Rows.Count - 1)("AA") = 444
    For i As integer = 1 to .rows.Count - 2
        If .Rows(i)("BB") <> .Rows(i-1)("BB") Then
            .Rows(i)("AA") = 444
        ElseIf .Rows(i)("BB") <> .Rows(i+1)("BB") Then
            .Rows(i)("AA") = 444
        End If
    Next
End With


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