Foxtable(狐表)用户栏目专家坐堂 → [求助]Find查找范围


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

主题:[求助]Find查找范围

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


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2016/2/18 9:45:00 [显示全部帖子]

DataTables("表A").Find("其余条件 And _Identify < " & 当前行("_Identify"))


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


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2016/2/18 9:59:00 [显示全部帖子]

 你全部代码肯定有问题,看完这一章

 

http://www.foxtable.com/help/topics/2226.htm

 


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


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2016/2/18 10:22:00 [显示全部帖子]

 数据量越大,find的次数越多,肯定越慢。而且那你还有日期的比较

 

http://www.foxtable.com/help/topics/2219.htm

 

 你可以单独做一个按钮,尽量不要用find看是否可以。


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


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2016/2/18 15:13:00 [显示全部帖子]

drs = DataTables("故障报告2").Select("飞机号 = '" & e.DataRow("飞机号") & "' and substring(系统章节, 1, 2) = '" & e.DataRow("系统章节").substring(0, 2) & "'", "日期") '注意要根据日期排序


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


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2016/2/18 15:15:00 [显示全部帖子]

或者

 

If e.DataCol.Name = "日期" Then
    Dim drs As List(of DataRow)
    Dim dv As Date = e.DataRow("日期")
    Dim n As Integer = 0
    drs = DataTables("故障报告2").Select("飞机号 = '" & e.DataRow("飞机号") & "'", "日期") '注意要根据日期排序
    For Each dr2 As DataRow In drs
        If dr2("系统章节").Substring(0, 2) = e.DataRow("系统章节").Substring(0, 2) AndAlso dr2("日期") >= dv.AddDays(-30) And dr2("日期") < dv Then
            n  = n + 1
            If n >=2 Then
                e.DataRow("预警") = "重复性故障"
            End If
        Else
            Exit For
        End If
    Next
End If

 


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


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2016/2/18 15:30:00 [显示全部帖子]

单独做一个简单的例子上传上来测试。

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


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2016/2/18 15:31:00 [显示全部帖子]

不行的情况,具体说明报什么错啊。

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


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2016/2/18 15:57:00 [显示全部帖子]

你在datacolchanged事件,就没必要用select吧?直接find就行,你写在按钮的时候,才需要select的。

 

If e.DataCol.Name = "日期" Then
    Dim drs As List(of DataRow)
    Dim dv As Date = e.DataRow("日期")
    Dim n As Integer = 0
    drs = DataTables("故障报告2").Select("飞机号 = '" & e.DataRow("飞机号") & "'", "日期") '注意要根据日期排序
    For Each dr2 As DataRow In drs
        If dr2("系统章节").Substring(0, 2) = e.DataRow("系统章节").Substring(0, 2) AndAlso dr2("日期") >= dv.AddDays(-30) AndAlso dr2("日期") < dv Then
            n  = n + 1
            If n >=2 Then
                e.DataRow("预警") = "重复性故障"
                Exit For
            End If
        End If
    Next
End If

 


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


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2016/2/18 17:23:00 [显示全部帖子]

如果是按钮,这样写

 

DataTables("故障报告2").StopRedraw

Dim drs As List(Of DataRow) = DataTables("故障报告2").Select("", "飞机号,系统章节,日期")

For i As Integer = 2 To drs.count - 1
    Dim flag As Boolean = True
    For j As Integer = 1 To 2
        If not (drs(i-j)("飞机号") = drs(i)("飞机号") AndAlso drs(i-j)("系统章节") = drs(i)("系统章节") AndAlso drs(i-j)("日期") >= drs(i)("日期").AddDays(-30) AndAlso drs(i-j)("日期") < drs(i)("日期")) Then
            flag = False
            Exit For
        End If
    Next
    If flag Then
        drs(i)("预警") = "重复性故障"
    Else
        drs(i)("预警") = Nothing
    End If
Next

DataTables("故障报告2").ResumeRedraw


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


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2016/2/18 17:42:00 [显示全部帖子]

如果是datacolchanged事件,这样写

 

If e.DataCol.Name = "日期" Then
    Dim drs As List(of DataRow)
    Dim dv As Date = e.DataRow("日期")
    Dim n As Integer = 0
    drs = DataTables("故障报告2").Select("飞机号 = '" & e.DataRow("飞机号") & "' and 系统章节 = '" & e.DataRow("系统章节") & "'", "日期") '注意要根据日期排序
    For Each dr2 As DataRow In drs
    'dr2("预警") = Nothing
        If dr2("日期") >= dv.AddDays(-30) And dr2("日期") < dv Then
            n  = n + 1
            If n >=2 Then
                e.DataRow("预警") = "重复性故障"

                Exit For
            End If
        End If
    Next
End If

 


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