以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  [求助]初始不加载动态模拟子表中碰到几个的问题?  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=51391)

--  作者:jk362223
--  发布时间:2014/5/26 10:26:00
--  [求助]初始不加载动态模拟子表中碰到几个的问题?
有表A,表B.表A的DataColChanged设置
If e.DataCol.Name = "姓名" AndAlso e.DataRow.IsNull("姓名") = False Then
    e.DataRow("标识") = GetPy(e.DataRow("姓名"), True)
End If

Select Case e.DataCol.Name 
    Case "姓名","标识"
        Dim Filter As String = "[编号] = \'" & e.DataRow("编号") & "\'"
        DataTables("表B").ReplaceFor(e.DataCol.Name, e.NewValue, Filter)
End Select
表B的DataColChanged设置
If e.DataCol.Name = "编号" Then
    If e.NewValue Is Nothing Then
        e.DataRow("标识") = Nothing
        e.DataRow("姓名") = Nothing
    Else
        Dim dr As DataRow
        dr = DataTables("表A").Find("[编号] = \'" & e.NewValue & "\'")
        If dr IsNot Nothing 
            e.DataRow("标识") = Nothing
            e.DataRow("姓名") = Nothing 
        End If
    End If
End If
表B的DataRowAdded设置
If CurrentTable.Name = "窗口1_Table2" Then
    e.DataRow("编号") = Tables("表A").Current("编号")
End If
表B的CurrentChanged设置
If e.Table.Name = "表B" Then
    If Forms("窗口1").Opened AndAlso Tables.Contains("窗口1_Table2") Then \'如果窗口已经打开
        Dim dr As DataRow = e.Table.Current.DataRow
        Dim wz As Integer = Tables("窗口1_Table2").FindRow(dr)
        If wz >=0 Then
            Tables("表B").Position = wz
        End If
    End If
Else If e.Table.Name = "窗口1_Table2" Then
    Dim dr As DataRow = e.Table.Current.DataRow
    Dim wz As Integer = Tables("表B").FindRow(dr)
    If wz >=0 Then
        Tables("表B").Position = wz
    End If
End If
在项目事件BeforeLoadInnerTable

If e.DataTableName = "表A" Then
    e.Filter = "[编号] Is Null"
End If
If e.DataTableName = "表B" Then
    e.Filter = "[编号] Is Null"
End If
设置窗口1,加一个按钮设置
Dim tbl As WinForm.Table
tbl = e.Form.CreateTable("Table2", "表B", True)
tbl.SetBounds(161, 225, 588, 250)
e.Form.AddControl(tbl)

Tables("窗口1_Table2").SetColVisibleWidth("编号|98|标识|98|姓名|98") 

If Forms("窗口1").Controls.Contains("Table2") Then
    Dim t As Table = Tables("窗口1_Table2")
    With Tables("表A")
        If .Current Is Nothing Then
            t.Filter = "False"
        Else
            t.Filter = "编号 = \'" & .Current("编号") & "\'"
        End If
    End With
End If
加一个Table1绑定表A,为副表
加一个TreeView1,NodeMouseDoubleClick设置
Dim Filter As String
If e.Node.Text = "加载所有数据" Then
    Filter = ""
Else
    Dim Value() As String
    Value = e.Node.FullPath.Split("\\")
    Select Case e.Node.Level
        Case 0
            Filter ="[标识] = \'" & Value(0) & "\'"
        Case 1
            Filter ="[标识] = \'" & Value(0) & "\' And [姓名] = \'" & Value(1) & "\'"
    End Select
End If
DataTables("表A").LoadFilter = Filter
DataTables("表A").Load()
在窗口AfterLoad设置
Dim cmd As New SQLCommand
Dim dt As DataTable
cmd.CommandText = "SELECT DISTINCT 标识,姓名 From {表A}"
dt = cmd.ExecuteReader()
Dim trv As WinForm.TreeView = e.Form.Controls("TreeView1")
trv.BuildTree(dt,"标识|姓名")
trv.Nodes.Insert("加载所有数据",0)
这样一路设置下来,想达到:初始不加载,动态表B的副表做表A的子表,通过加载树加载表A的数据,子表B的副表对应加载,并自动引用表A的“标识”“姓名”,
现在的问题是1、不能自动引用表A的“标识”“姓名”。2、重启系统后,新加载的表B数据不能对应显示。


--  作者:有点甜
--  发布时间:2014/5/26 10:28:00
--  
 把例子传上来。
--  作者:jk362223
--  发布时间:2014/5/26 10:29:00
--  
没提交附件啊,怎么重复了?不能上传附件?
--  作者:Bin
--  发布时间:2014/5/26 10:30:00
--  
上传图片和文件参考这里http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&Id=78


请尽量使用IE,谷歌,火狐等主流浏览器上传.  

使用谷歌浏览器必须要先输入一个以上的字符

上传后需要等文件代码出现才算成功!

--  作者:jk362223
--  发布时间:2014/5/26 10:30:00
--  
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:100_201405260950.zip


--  作者:Bin
--  发布时间:2014/5/26 10:37:00
--  
.
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:035b24(1).foxdb


--  作者:jk362223
--  发布时间:2014/5/26 11:02:00
--  
是那里出了问题?你发回来好象没改的地方啊?
--  作者:Bin
--  发布时间:2014/5/26 11:03:00
--  
改了表BDataColChanged事件
--  作者:jk362223
--  发布时间:2014/5/26 15:46:00
--  
要是在BeforeLoadInnerTable设置:初始不加载,重启系统后,新加载的表B数据不能对应显示
If e.DataTableName = "表A" Then
    e.Filter = "[编号] Is Null"
End If
If e.DataTableName = "表B" Then
    e.Filter = "[编号] Is Null"
End If


--  作者:Bin
--  发布时间:2014/5/26 15:50:00
--  
未发现有问题啊, 图示一下问题所在.