Foxtable(狐表)用户栏目专家坐堂 → 删除子表行非常慢处是什么原因?


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

主题:删除子表行非常慢处是什么原因?

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


加好友 发短信
等级:童狐 帖子:250 积分:1813 威望:0 精华:0 注册:2012/6/28 13:53:00
删除子表行非常慢处是什么原因?  发帖心情 Post By:2018/2/8 9:44:00 [只看该作者]

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


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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By: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
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:童狐 帖子:250 积分:1813 威望:0 精华:0 注册:2012/6/28 13:53:00
  发帖心情 Post By:2018/2/8 15:32:00 [只看该作者]

引用:代码写到click或者其它事件去,不要写在这个事件。
问题:清单明细表工料一类列目录树主表不能自动绑定项目ID,所有目录树都一样了

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By: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
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:童狐 帖子:250 积分:1813 威望:0 精华:0 注册:2012/6/28 13:53:00
  发帖心情 Post By: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()


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


加好友 发短信
等级:超级版主 帖子:13837 积分:69650 威望:0 精华:0 注册:2016/11/1 14:42:00
  发帖心情 Post By:2018/2/8 16:22:00 [只看该作者]

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

 

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

 

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


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


加好友 发短信
等级:童狐 帖子:250 积分:1813 威望:0 精华:0 注册:2012/6/28 13:53:00
  发帖心情 Post By: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()


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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2018/2/9 9:30:00 [只看该作者]

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

 

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


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


加好友 发短信
等级:童狐 帖子:250 积分:1813 威望:0 精华:0 注册:2012/6/28 13:53:00
  发帖心情 Post By:2018/2/9 13:57:00 [只看该作者]

1、没修改之前是正常引用目录树,比如商丘市虞城县产业集聚区道路工程
图片点击可在新窗口打开查看此主题相关图片如下:1.png
图片点击可在新窗口打开查看

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

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By: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


 回到顶部
总数 38 1 2 3 4 下一页