Foxtable(狐表)用户栏目专家坐堂 → [求助]多条件判断表达式问题


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

主题:[求助]多条件判断表达式问题

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


加好友 发短信
等级:婴狐 帖子:5 积分:96 威望:0 精华:0 注册:2018/9/25 17:37:00
[求助]多条件判断表达式问题  发帖心情 Post By:2018/9/25 18:00:00 [只看该作者]

请问,我想写一个表达式达到这种效果:
条件:当前“结果”项值为1且当前结果前一行值为0,0前面连续出现3个1,然后出现一个0,再出现连续2个1,最后出现3个以上的0。
满足以上条件则确认为1
[此贴子已经被作者于2018/9/25 18:00:31编辑过]

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


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

表达式无法做到,必须编写事件代码处理。

 

具体请做一个对应的项目发上来测试。


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


加好友 发短信
等级:婴狐 帖子:5 积分:96 威望:0 精华:0 注册:2018/9/25 17:37:00
  发帖心情 Post By:2018/9/25 18:08:00 [只看该作者]

好的,已传,谢谢

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


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

以下是引用ygyzb在2018/9/25 18:08:00的发言:
好的,已传,谢谢

 

请正确上传,没有看到你上传的项目。


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


加好友 发短信
等级:婴狐 帖子:5 积分:96 威望:0 精华:0 注册:2018/9/25 17:37:00
  发帖心情 Post By:2018/9/25 18:48:00 [只看该作者]

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


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


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

Dim t As Table = Tables("表A")
For Each r As Row In t.Rows
    If r("第二列") = "1" AndAlso r.Index >= 4 Then
        '当前结果前一行值为0,0前面连续出现3个1,然后出现一个0,再出现连续2个1,最后出现3个以上的0.
        Dim r1 = t.Rows(r.Index-1) '前一行
        Dim r2 = t.Rows(r.Index-2) '前一行
        Dim r3 = t.Rows(r.Index-3) '前一行
        Dim r4 = t.Rows(r.Index-4) '前一行
        If r1("第二列") = 0 AndAlso r1("第二列") = 1 AndAlso r1("第二列") = 1 AndAlso r1("第二列") = 1 Then
            msgbox("abc")
        Else
            msgbox("123")
        End If
    End If
Next

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


加好友 发短信
等级:婴狐 帖子:5 积分:96 威望:0 精华:0 注册:2018/9/25 17:37:00
  发帖心情 Post By:2018/9/25 19:30:00 [只看该作者]

你好,我是想让表中每一行确认这一行的值自动显示{满足条件则显示1,不满足则为空}.谢谢

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


加好友 发短信
等级:超级版主 帖子:110738 积分:563610 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2018/9/25 20:06:00 [只看该作者]

没看懂,请手工计算符合条件的值,然后截图,并使用颜色标记一下符合条件的数据是怎么样的

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


加好友 发短信
等级:婴狐 帖子:5 积分:96 威望:0 精华:0 注册:2018/9/25 17:37:00
  发帖心情 Post By:2018/9/25 20:21:00 [只看该作者]


图片点击可在新窗口打开查看此主题相关图片如下:qq截图20180925201944.png
图片点击可在新窗口打开查看

上面截图那个就是满足条件的。

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


加好友 发短信
等级:超级版主 帖子:110738 积分:563610 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2018/9/25 21:06:00 [只看该作者]

DataColChanged事件


If e.DataCol.Name = "结果"

    Dim t As Table = Tables(e.DataTable.Name)

    Dim idx As Integer = t.FindRow(e.DataRow)

    If idx >= 10 Then 

        Dim str As String = ""

        Dim a As Integer = idx - 10

        For i As Integer = idx To a Step -1

            str = str & t.Rows(i)("结果")

        Next

        'Output.Show(str)

        If str = "10111011000" Then

            e.DataRow("确认") = 1

        End If

    End If

End If


或者命令窗口直接执行


Dim t As Table = Tables("记录_5")

Dim str As String = "***********"

Dim s1 As String = "00011011101"

t.StopRedraw

For i As Integer = 0 To t.Rows.Count - 1

    str = str.SubString(1) & t.Rows(i)("结果")

    If str = s1 Then

        Output.Show(str)

        t.Rows(i)("确认") = 1

    End If

Next

t.ResumeRedraw


 回到顶部