Foxtable(狐表)用户栏目专家坐堂 → [求助]窗口中的table怎样筛选特定范围的行?


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

主题:[求助]窗口中的table怎样筛选特定范围的行?

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


加好友 发短信
等级:幼狐 帖子:51 积分:577 威望:0 精华:0 注册:2018/4/4 8:37:00
[求助]窗口中的table怎样筛选特定范围的行?  发帖心情 Post By:2018/6/20 15:28:00 [只看该作者]

窗口中的table绑定到“货位表”。
当打开窗口时,选中“产品表”某一行时,窗口中的table根据“产品表”中的“产品编码”,显示“货位表”对应“产品编码”行的前5行和后5行数据,


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


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

Dim drs = DataTables("货位表").Select("产品编码='123'")
Dim str As String = "-1,"
For i As Integer = 1 To 5
    If drs.count >= i Then
        Dim dr As DataRow = drs(i-1)
        str &= dr("_Identify") & ","
    End If
Next
msgbox(str)
For i As Integer = 5 To 1 Step -1
    If drs.count-i >= 0 Then
        Dim dr As DataRow = drs(drs.count-i)
        str &= dr("_Identify") & ","
    End If
Next
msgbox(str)


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


加好友 发短信
等级:幼狐 帖子:51 积分:577 威望:0 精华:0 注册:2018/4/4 8:37:00
  发帖心情 Post By:2018/6/21 15:55:00 [只看该作者]

多谢有点甜老师,问题已解决,代码如下
产品表,currentchanged事件:

If Forms("关联产品").Opened() Then
    Dim t As Table = Tables("关联产品_Table1")
    Dim dr As DataRow
    Dim id As Integer
    With Tables("产品表")
        If Tables("产品表").Current Is Nothing Then
            t.Filter = "False"
        Else
            dr = DataTables("货位表").Find("产品编码 = " & "'" & e.Table.Current("产品编码") & "'") 
            id = dr("_Identify")
            t.Filter = "_Identify >= '" & id-5 & "' And _Identify <= '" & id+5 & "'"
            Tables("关联产品_Table1").Position = 5
        End If
    End With
End If

但是新的问题出现了:

我想在窗口“关联产品”中的table1反定位产品表中的产品时,产品表的postion不断的循环-1,直至卡死,
dr=nothing时没问题,dr不等于nothing时就会出现上述问题。

窗口“关联产品”的“table1”的currentchanged事件,代码如下:

If e.Table.Current Is Nothing Then

    Return

End If

Dim wz As Integer

Dim dr As DataRow

dr = DataTables("产品表").Find("[产品编码] = '" & e.Table.Current("产品编码") & "'")

If dr IsNot Nothing Then

    wz = Tables("产品表").FindRow(dr)

    If wz >= 0 Then

        Tables("产品表").Position = wz

    End If

End If


请问这是为啥








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


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

判断表名

 

msgbox(e.table.name)

If Forms("关联产品").Opened() andAlso e.table.name = "产品表" Then


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


加好友 发短信
等级:幼狐 帖子:51 积分:577 威望:0 精华:0 注册:2018/4/4 8:37:00
  发帖心情 Post By:2018/6/21 16:22:00 [只看该作者]

回老师,试了,产品表的position还是一样不停的-1,如果正确的行在原行的上方不远处,才会停下。如果相距甚远,则会卡死。

应该是窗口中的表“table1”的代码有问题,我也不明白

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


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

产品表,currentchanged事件:

If Forms("关联产品").Opened() Then
    Dim t As Table = Tables("关联产品_Table1")
    Dim dr As DataRow
    Dim id As Integer
    With Tables("产品表")
        If Tables("产品表").Current Is Nothing Then
            t.Filter = "False"
        Else
            dr = DataTables("货位表").Find("产品编码 = " & "'" & e.Table.Current("产品编码") & "'") 
            id = dr("_Identify")
systemready = false
            t.Filter = "_Identify >= '" & id-5 & "' And _Identify <= '" & id+5 & "'"
            Tables("关联产品_Table1").Position = 5
systemready = true
        End If
    End With
End If

 
窗口“关联产品”的“table1”的currentchanged事件,代码如下:

If e.Table.Current Is Nothing Then

    Return

End If

Dim wz As Integer

Dim dr As DataRow

dr = DataTables("产品表").Find("[产品编码] = '" & e.Table.Current("产品编码") & "'")

If dr IsNot Nothing Then

    wz = Tables("产品表").FindRow(dr)

    If wz >= 0 Then

systemready = false

        Tables("产品表").Position = wz

systemready = true

    End If

End If


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


加好友 发短信
等级:幼狐 帖子:51 积分:577 威望:0 精华:0 注册:2018/4/4 8:37:00
  发帖心情 Post By:2018/6/21 17:01:00 [只看该作者]

解决,多谢老师!!!!!!!!

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


加好友 发短信
等级:幼狐 帖子:51 积分:577 威望:0 精华:0 注册:2018/4/4 8:37:00
  发帖心情 Post By:2018/6/22 16:05:00 [只看该作者]

现在发现了一个新的问题,“产品表”新增行报错

错误所在事件“产品表”,currentchanged事件
详细错误信息:未将对象引用设置到对象的实例。

请问老师,这个原因是为啥


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


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

currentChanged事件加上代码

 

If e.Table.Current Is Nothing Then

    Return

End If


 回到顶部