Foxtable(狐表)用户栏目专家坐堂 → [求助]初始不加载动态模拟子表中碰到几个的问题?


  共有4282人关注过本帖树形打印复制链接

主题:[求助]初始不加载动态模拟子表中碰到几个的问题?

帅哥哟,离线,有人找我吗?
jk362223
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:一尾狐 帖子:422 积分:2708 威望:0 精华:0 注册:2012/2/10 18:12:00
[求助]初始不加载动态模拟子表中碰到几个的问题?  发帖心情 Post By: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数据不能对应显示。


 回到顶部
帅哥哟,离线,有人找我吗?
jk362223
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:一尾狐 帖子:422 积分:2708 威望:0 精华:0 注册:2012/2/10 18:12:00
  发帖心情 Post By:2014/5/26 10:29:00 [显示全部帖子]

没提交附件啊,怎么重复了?不能上传附件?

 回到顶部
帅哥哟,离线,有人找我吗?
jk362223
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:一尾狐 帖子:422 积分:2708 威望:0 精华:0 注册:2012/2/10 18:12:00
  发帖心情 Post By:2014/5/26 10:30:00 [显示全部帖子]

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:100_201405260950.zip


 回到顶部
帅哥哟,离线,有人找我吗?
jk362223
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:一尾狐 帖子:422 积分:2708 威望:0 精华:0 注册:2012/2/10 18:12:00
  发帖心情 Post By:2014/5/26 11:02:00 [显示全部帖子]

是那里出了问题?你发回来好象没改的地方啊?

 回到顶部
帅哥哟,离线,有人找我吗?
jk362223
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:一尾狐 帖子:422 积分:2708 威望:0 精华:0 注册:2012/2/10 18:12:00
  发帖心情 Post By: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


 回到顶部
帅哥哟,离线,有人找我吗?
jk362223
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:一尾狐 帖子:422 积分:2708 威望:0 精华:0 注册:2012/2/10 18:12:00
  发帖心情 Post By:2014/5/26 15:50:00 [显示全部帖子]

这种情况可以解决吗?

 回到顶部
帅哥哟,离线,有人找我吗?
jk362223
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:一尾狐 帖子:422 积分:2708 威望:0 精华:0 注册:2012/2/10 18:12:00
  发帖心情 Post By:2014/5/26 16:23:00 [显示全部帖子]

上传的附件中,没设置
If e.DataTableName = "表A" Then
    e.Filter = "[编号] Is Null"
End If
If e.DataTableName = "表B" Then
    e.Filter = "[编号] Is Null"
End If
若设置了,重启系统,打开窗口,会发现在子表中上次加的,不能加载,子表是空的,
此主题相关图片如下:qq截图20140526162102.png
按此在新窗口浏览图片


 回到顶部
帅哥哟,离线,有人找我吗?
jk362223
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:一尾狐 帖子:422 积分:2708 威望:0 精华:0 注册:2012/2/10 18:12:00
  发帖心情 Post By:2014/5/27 9:49:00 [显示全部帖子]

不知道怎搞的,按照上述设置,总出现如图提示
图片点击可在新窗口打开查看此主题相关图片如下:qq截图20140527094448.png
图片点击可在新窗口打开查看

 回到顶部
帅哥哟,离线,有人找我吗?
jk362223
  9楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:一尾狐 帖子:422 积分:2708 威望:0 精华:0 注册:2012/2/10 18:12:00
  发帖心情 Post By:2014/5/27 9:50:00 [显示全部帖子]

附件

 回到顶部
帅哥哟,离线,有人找我吗?
jk362223
  10楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:一尾狐 帖子:422 积分:2708 威望:0 精华:0 注册:2012/2/10 18:12:00
  发帖心情 Post By:2014/5/27 9:53:00 [显示全部帖子]

如附件
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:附件sql_201405270945.zip


 回到顶部
总数 12 1 2 下一页