以文本方式查看主题

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

--  作者:chengjingliang
--  发布时间:2018/2/8 9:44:00
--  删除子表行非常慢处是什么原因?
删除清单子表清单明细表的行非常慢处是什么原因?
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:成本企划跟踪核算系统.rar


--  作者:有点甜
--  发布时间:2018/2/8 10:00:00
--  

删除prepareEdit事件代码

 

If e.IsFocusCell AndAlso e.Col.name = "工料一类" Then
    Dim tb As New DropTreeBuilder
    tb.SourceTable = DataTables("工料单价") \'指定目录树表
    tb.TreeFilter="项目id=\'" & e.Row("项目id") & "\'"
    tb.TreeCols = "工料一类|工料二类|工料名称" \'指定用于生成目录树的列
    tb.SourceCols = "工料一类|工料二类|工料名称|工料单位|工料ID|工料计划价" \'指定数据来源列
    tb.ReceiveCols = "工料一类|工料二类|工料名称|工料单位|工料ID|工料计划价" \'指定数据接收列
    e.Col.DropTree = tb.Build()
End If

 

代码写到click或者其它事件去,不要写在这个事件。


--  作者:chengjingliang
--  发布时间:2018/2/8 15:32:00
--  
引用:代码写到click或者其它事件去,不要写在这个事件。
问题:清单明细表工料一类列目录树主表不能自动绑定项目ID,所有目录树都一样了

--  作者:有点甜
--  发布时间:2018/2/8 15:37:00
--  

写到任意相关的事件那里去,就是不要写到prepareEdit事件。

 

比如 click、currentChanged、诸如此类的,自行寻找适合自己的事件,代码

 

    Dim tb As New DropTreeBuilder
    tb.SourceTable = DataTables("工料单价") \'指定目录树表
    tb.TreeFilter="项目id=\'" & Tables("表名").Current("项目id") & "\'"
    tb.TreeCols = "工料一类|工料二类|工料名称" \'指定用于生成目录树的列
    tb.SourceCols = "工料一类|工料二类|工料名称|工料单位|工料ID|工料计划价" \'指定数据来源列
    tb.ReceiveCols = "工料一类|工料二类|工料名称|工料单位|工料ID|工料计划价" \'指定数据接收列
    Tables("表名").cols("列名").DropTree = tb.Build()


--  作者:chengjingliang
--  发布时间:2018/2/8 16:16:00
--  
还是不行,清单明细表工料一类列目录树主表不能自动绑定项目ID,所有目录树都一样了

 Dim tb As New DropTreeBuilder
    tb.SourceTable = DataTables("工料单价") \'指定目录树表

    tb.TreeFilter="项目id=\'" & 
Tables("工料单价").Current("项目id") & "\'"
    tb.TreeCols = "工料一类|工料二类|工料名称" \'指定用于生成目录树的列

    tb.SourceCols = "工料一类|工料二类|工料名称|工料单位|工料ID|工料计划价" \'指定数据来源列

    tb.ReceiveCols = "工料一类|工料二类|工料名称|工料单位|工料ID|工料计划价" \'指定数据接收列

    
Tables("工料单价").cols("工料一类").DropTree = tb.Build()


--  作者:有点色
--  发布时间:2018/2/8 16:22:00
--  

1、表名是【清单.清单明细】啊,你都没看懂代码。

 

2、你把代码写到click事件了没有?

 

3、click事件,加入msgbox,点击表格,能否弹出?如果弹出之后,下拉目录树肯定没问题。


--  作者:chengjingliang
--  发布时间:2018/2/9 9:20:00
--  
click事件,DataColChanged事件都试了还是不行,还请老师指教

\'清单明细表工料一类列目录树主表绑定项目ID

 Dim tb As New DropTreeBuilder

    tb.SourceTable = DataTables("工料单价") \'指定目录树表

    tb.TreeFilter="项目id=\'" & Tables("清单.清单明细").Current("项目id") & "\'"

    tb.TreeCols = "工料一类|工料二类|工料名称" \'指定用于生成目录树的列

    tb.SourceCols = "工料一类|工料二类|工料名称|工料单位|工料ID|工料计划价" \'指定数据来源列

    tb.ReceiveCols = "工料一类|工料二类|工料名称|工料单位|工料ID|工料计划价" \'指定数据接收列

    Tables("清单.清单明细").cols("工料一类").DropTree = tb.Build()


--  作者:有点甜
--  发布时间:2018/2/9 9:30:00
--  

1、你本来没修改的代码就是不能正常引用目录树的吧?

 

2、你要引用工料单价的逻辑有问题。限制的条件是什么?两个表有什么关联?目录树应该显示成什么样才算正确?


--  作者:chengjingliang
--  发布时间:2018/2/9 13:57:00
--  
1、没修改之前是正常引用目录树,比如商丘市虞城县产业集聚区道路工程
图片点击可在新窗口打开查看此主题相关图片如下:1.png
图片点击可在新窗口打开查看

S334新邵县张家冲至罗桥公路改建工程
图片点击可在新窗口打开查看此主题相关图片如下:2.png
图片点击可在新窗口打开查看
2、目录树引用工料单价表,一个项目对应一个工料单价表,不同项目工料单价表会有所不同,希望通过目录树选用工料单价表时对应同一个项目,但省略选项目名称的步骤

--  作者:有点甜
--  发布时间:2018/2/9 14:33:00
--  

prepareEdit事件,代码改成

 

static pid As Double = -1
If e.Col.name = "工料一类" Then
    If pid <> e.Row("项目id") Then
        Dim tb As New DropTreeBuilder
        tb.SourceTable = DataTables("工料单价") \'指定目录树表
        tb.TreeFilter="项目id=\'" & e.Row("项目id") & "\'"
        tb.TreeCols = "工料一类|工料二类|工料名称" \'指定用于生成目录树的列
        tb.SourceCols = "工料一类|工料二类|工料名称|工料单位|工料ID|工料计划价" \'指定数据来源列
        tb.ReceiveCols = "工料一类|工料二类|工料名称|工料单位|工料ID|工料计划价" \'指定数据接收列
        e.Col.DropTree = tb.Build()
        pid = e.Row("项目id")
    End If
End If