以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  求行判定代码如何写(已解决)  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=3497)

--  作者:epilight
--  发布时间: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编辑过]

--  作者:狐狸爸爸
--  发布时间:2009/7/9 11:22:00
--  

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

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


--  作者:epilight
--  发布时间:2009/7/9 11:33:00
--  

代码在窗口按键中,


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

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

--  作者:狐狸爸爸
--  发布时间:2009/7/9 11:39:00
--  
你传错了吧?
这个文件和一楼没有关系啊.
其实只需做一个一楼这样的表,输入一楼的数据和期望的结果即可.

此外,你给的条件:

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

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

何一楼给的判断结果并不符合.
--  作者:epilight
--  发布时间:2009/7/9 11:41:00
--  

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


--  作者:epilight
--  发布时间:2009/7/9 11:45:00
--  

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

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

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

--  作者:狐狸爸爸
--  发布时间: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
--  发布时间:2009/7/9 12:56:00
--  
重新上传一楼的例子
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:test.table


--  作者:epilight
--  发布时间:2009/7/9 14:14:00
--  

有帮助的吗


--  作者:狐狸爸爸
--  发布时间: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