以文本方式查看主题

-  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=82285)

--  作者:cyrollin
--  发布时间:2016/3/15 10:58:00
--  二个分开的TABLE间的位置联动

副本Table之行位置联动

假定窗口中插入了一个Table控件,绑定到"表A",作为副本。
希望在这个副本Table中选定一行时,表A也能自动选定这一行,实现这个任务很简单,只需将副本Table的CurrentChanged事件代码设置为:

Dim dr As DataRow = e.Table.Current.DataRow
Dim
wz As Integer = Tables("A").FindRow(dr)
If
wz >=0 Then
Tables(
"
A").Position = wz
End
If

反过来,如果你想在表A选定某行时,副本Table也能同步选定同一样,可以讲表A的CurrentChanged事件代码设置为:

If Forms("窗口1").Opened Then \'如果窗口已经打开
Dim dr As DataRow = e.Table.Current.DataRow
Dim wz As Integer = Tables("窗口1_Table1").FindRow(dr)
If wz >=0 Then
Tables(
"
窗口1_Table1").Position = wz
End If
End
If


----------------------------------


这个是帮助文件里面关于窗口中的TABLE表间的位置联动,如果是二个分开的TABLE, 不在同一个窗口,怎么位置联动啊?

也就是:比如有表A和表B,都有同一个产品名字, 当指到表A的某一个产品时,切换到表B的时候, 会自动定位到此产品的那一行


并且写在什么事件?



--  作者:大红袍
--  发布时间:2016/3/15 11:00:00
--  

findrow函数看看,其余不变。

 

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

 

 


--  作者:cyrollin
--  发布时间:2016/3/15 11:21:00
--  
好的,也是写在表A的 currentchanged 事件里面吗?
--  作者:大红袍
--  发布时间:2016/3/15 11:24:00
--  

 是的,如果要区分主表和窗口表,可以用表名

 

If e.Table.Name = "窗口1_Table1" Then

    \'联动代码

End If


--  作者:cyrollin
--  发布时间:2016/3/15 14:58:00
--  
With CurrentTable
    Dim r As Integer
    Dim val As Integer = e.Table.current("编号")
    r = .findrow(val)
    If r >=0 Then
        Tables("表B").position = r
    End If
End With

-----------------------
错误提示,筛选表达式“24” (编号)的计算结果不是布尔值项

--  作者:大红袍
--  发布时间:2016/3/15 15:03:00
--  
r = .findrow("编号 = \'" & val & "\'")
--  作者:cyrollin
--  发布时间:2016/3/15 15:13:00
--  
没错误提示了,但定位不准,
比如当指到当前 表A 的 编号列为 12的这一行时,切换到表B, 定位的那一行的编号列并不是12

现在的代码是:

With CurrentTable
    Dim r As Integer
    Dim val As Integer = e.Table.current("编号")
    r = .findrow("[编号] = \'" & val & "\'")
    If r >=0 Then
        Tables("表B").position = r
    End If
End With



--  作者:大红袍
--  发布时间:2016/3/15 15:16:00
--  
With Tables("表B")
    Dim r As Integer
    Dim val As Integer = e.Table.current("编号")
    r = .findrow("[编号] = \'" & val & "\'")
    If r >=0 Then
        Tables("表B").position = r
    End If
End With

--  作者:cyrollin
--  发布时间:2016/3/15 15:29:00
--  
goooooooooooooooooooood, thanks