以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  [分享]ChildFiter 和 ChildRowAdding-很有用的两个自编内部函数  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=27089)

--  作者:关键下一秒
--  发布时间:2012/12/21 15:18:00
--  [分享]ChildFiter 和 ChildRowAdding-很有用的两个自编内部函数

\'自动根据父表当前行显示子表关联行
\'调用方法 Functions.Execute("ChildFilter","子表所在窗口名","子表所在窗口中的表名","关联名")
If Forms(args(0)).Opened()
    Dim re As relation=relations(args(2))
    Dim pcls() As DataCol = re.parentcolumns
    Dim ccls() As DataCol = re.childcolumns
    Dim  rr As Row =Tables(re.ParentTable.name).current
    Dim flt As String="True"
    If pcls.length>0 Then
        For i As Integer=0 To pcls.length-1
            flt=flt & " and " & ccls(i).name & "=\'" & rr(pcls(i).name) & "\'"
        Next
    End If
    Dim t As Table = Tables(args(1))
    Dim t1 As Table = Tables(re.parenttable.name)
    Dim r As Row = t1.current
    If r Is Nothing Then
        t.Filter = "False"
    Else
        t.Filter = flt
    End If
End If

 

\'新增子表行时,自动根据父表当前行更新子表相关行的关联字段
\'调用方法 Functions.Execute("ChildRowAdding",e,"关联名")
Dim e As object =args(0)
Dim re As relation=relations(args(1))
Dim pcls() As DataCol = re.parentcolumns
Dim ccls() As DataCol = re.childcolumns
Dim  rr As Row =Tables(re.ParentTable.name).current
Dim  r As DataRow =e.DataRow
If r IsNot Nothing
    If pcls.length>0 Then
        For i As Integer=0 To pcls.length-1
            r(ccls(i).name)=rr(pcls(i).name)
        Next
    End If
End If

[此贴子已经被作者于2012-12-22 15:38:29编辑过]

--  作者:关键下一秒
--  发布时间:2012/12/21 15:18:00
--  
模拟关联者专用
--  作者:lin_hailun
--  发布时间:2012/12/21 15:21:00
--  
 嗯嗯,希望狐表可以收录更多实用的函数,方便大家调用。
[此贴子已经被作者于2012-12-21 15:20:52编辑过]

--  作者:卧美吻花
--  发布时间:2012/12/21 16:52:00
--  
支持,顶起
--  作者:小猪鑫鑫
--  发布时间:2012/12/21 19:11:00
--  
收藏,学习
--  作者:关键下一秒
--  发布时间:2012/12/22 15:22:00
--  
再加一个函数,完整点,现在做模拟关联不用愁了。