以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  [求助]窗口中的table怎样筛选特定范围的行?  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=120613)

--  作者:倪远歌1
--  发布时间:2018/6/20 15:28:00
--  [求助]窗口中的table怎样筛选特定范围的行?
窗口中的table绑定到“货位表”。
当打开窗口时,选中“产品表”某一行时,窗口中的table根据“产品表”中的“产品编码”,显示“货位表”对应“产品编码”行的前5行和后5行数据,


--  作者:有点甜
--  发布时间: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
--  发布时间: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


请问这是为啥








--  作者:有点甜
--  发布时间:2018/6/21 16:05:00
--  

判断表名

 

msgbox(e.table.name)

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


--  作者:倪远歌1
--  发布时间:2018/6/21 16:22:00
--  
回老师,试了,产品表的position还是一样不停的-1,如果正确的行在原行的上方不远处,才会停下。如果相距甚远,则会卡死。

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

--  作者:有点甜
--  发布时间: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
--  发布时间:2018/6/21 17:01:00
--  
解决,多谢老师!!!!!!!!
--  作者:倪远歌1
--  发布时间:2018/6/22 16:05:00
--  
现在发现了一个新的问题,“产品表”新增行报错

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

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


--  作者:有点甜
--  发布时间:2018/6/22 16:55:00
--  

currentChanged事件加上代码

 

If e.Table.Current Is Nothing Then

    Return

End If