以文本方式查看主题

-  Foxtable(狐表)  (http://www.foxtable.com/bbs/index.asp)
--  专家坐堂  (http://www.foxtable.com/bbs/list.asp?boardid=2)
----  子表返回父表时如何才能自动返回到父表的对应行  (http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&id=57260)

--  作者:cxabc123
--  发布时间:2014/9/22 9:21:00
--  子表返回父表时如何才能自动返回到父表的对应行
在子表第十行,现在要返回父表,返回到父表后,光标能够自动聚焦到子表第十行相对应的父表,比如父表与子表的关联列为姓名,在子表时当前行的姓名为张三,返回父表时光标自动聚焦到父表的张三行
--  作者:Bin
--  发布时间:2014/9/22 9:27:00
--  
利用FINDROW http://www.foxtable.com/help/topics/0553.htm
--  作者:有点甜
--  发布时间:2014/9/22 9:28:00
--  
 Tables("父表").FindRow("姓名 = \'" & Tables("子表").Current("姓名") & "\'")
--  作者:cxabc123
--  发布时间:2014/9/22 9:31:00
--  
以下是引用有点甜在2014-9-22 9:28:00的发言:
 Tables("父表").FindRow("姓名 = \'" & Tables("子表").Current("姓名") & "\'")
就这一句不行吧


--  作者:cxabc123
--  发布时间:2014/9/22 9:33:00
--  
    Dim r As Integer
    r
 = 
Tables("父表").FindRow("姓名 = \'" & Tables("子表").Current("姓名") & "\'")
    If 
r >= 0 Then \'如果找到的话
        
Tables("父表").Position = \'定位到找到的行。
    
End If

是不是这样

--  作者:cxabc123
--  发布时间:2014/9/22 9:34:00
--  
放在那儿呀
--  作者:Bin
--  发布时间:2014/9/22 9:38:00
--  
放在哪里.关键看你想什么时候执行,  这代码放在任何地方都可以.
--  作者:有点甜
--  发布时间:2014/9/22 9:39:00
--  
以下是引用cxabc123在2014-9-22 9:34:00的发言:
放在那儿呀

 

CurrentChanged事件

 

If e.Table.Current Is Nothing Then Return

Dim r As Integer
r = Tables("父表").FindRow("姓名 = \'" & Tables("子表").Current("姓名") & "\'")
If r >= 0 Then \'如果找到的话
    Tables("父表").Position = r \'定位到找到的行.
End If


--  作者:cxabc123
--  发布时间:2014/9/22 11:27:00
--  
以下是引用有点甜在2014-9-22 9:39:00的发言:

 

CurrentChanged事件

 

If e.Table.Current Is Nothing Then Return

Dim r As Integer
r = Tables("父表").FindRow("姓名 = \'" & Tables("子表").Current("姓名") & "\'")
If r >= 0 Then \'如果找到的话
    Tables("父表").Position = r \'定位到找到的行.
End If

如果把上述代码放在全局表事件CurrentChanged事件,作一个通用的该如何作


--  作者:有点甜
--  发布时间:2014/9/22 11:49:00
--  

 参考代码

 

If e.Table.Current Is Nothing Then Return

For Each ra As Relation In Relations
    If ra.ChildTable.Name = e.Table.Name Then
        Dim filter As String = ""
        filter = ra.ParentColumn.Name & " = \'" & e.Table.Current(ra.ChildColumn.Name) & "\'"
        Dim r As Integer
        r = Tables(ra.ParentTable.Name).FindRow(filter)
        If r >= 0 Then \'如果找到的话
            Tables(ra.ParentTable.Name).Position = r \'定位到找到的行.
        End If
    End If
Next

 

 

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