Foxtable(狐表)用户栏目专家坐堂 → [求助]MainTableChanged项目事件中创建目录树的小bug,请狐爸解决


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

主题:[求助]MainTableChanged项目事件中创建目录树的小bug,请狐爸解决

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


加好友 发短信
等级:四尾狐 帖子:977 积分:6835 威望:0 精华:0 注册:2012/4/2 21:49:00
[求助]MainTableChanged项目事件中创建目录树的小bug,请狐爸解决  发帖心情 Post By:2013/7/25 12:24:00 [只看该作者]

1、字符型列“外聘”有的人为“是”,而有的人为空白。
2、现在当前行选择了“外聘”为“是”的人,“外聘”列正常显示为“是”。
3、要把当前行改为“外聘”不为“是”的人,或原来“外聘”为“是”是错误的,在修改“人员管理”表后希望重选该人后清除“外聘”列中的“是”。
这时就发现小bug了:在下列代码中,如果采用1、2两行(“外聘”在中间),则“是”会被清除,而采用3、4行(外聘在最后)就不会清除“是”,如果“外聘“放在前面错误就更大了。
这种现象与列属性中设置目录树列表是一样的。
请狐爸解决。

If MainTable.Name = "考勤管理"  Then
    Tables("考勤管理").sort="部门名称,年度,月份,姓名"
    Dim ta As New DropTreeBuilder
    ta.SourceTable = DataTables("人员管理") '指定目录树表
    ta.TreeCols = "部门名称|员工姓名" '指定用于生成目录树的列
1    ta.SourceCols = "部门名称|外聘|员工姓名" '指定数据来源列
2    ta.ReceiveCols = "部门名称|外聘|姓名" '指定数据接收列
3    ta.SourceCols = "部门名称|员工姓名|外聘" '指定数据来源列
4    ta.ReceiveCols = "部门名称|姓名|外聘" '指定数据接收列
    If _userroles<>"开发者" AndAlso _userroles<>"管理者" AndAlso _userroles<>"审核人员" AndAlso _usergroup<>"" Then
        ta.TreeFilter="[部门名称] in (" & _usergroup & ")"
    End If
    Tables("考勤管理").Cols("部门名称").DropTree = ta.Build()
end if

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


加好友 发短信
等级:贵宾 帖子:35433 积分:178524 威望:0 精华:3 注册:2013/3/30 16:36:00
  发帖心情 Post By:2013/7/25 12:26:00 [只看该作者]

这种问题最好上个例子比较直观.

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


加好友 发短信
等级:四尾狐 帖子:977 积分:6835 威望:0 精华:0 注册:2012/4/2 21:49:00
  发帖心情 Post By:2013/7/25 14:58:00 [只看该作者]

超级版主:这么简单的也要上个例子?
我改内容吧!
表B:第一列、第二列、第三列  3列
1行        A、B、是
2行        A、C、空白
表A: 第一列、第二列、第三列
MainTableChanged事件:
If MainTable.Name = "表A"  Then
    Dim ta As New DropTreeBuilder
    ta.SourceTable = DataTables("表B") '指定目录树表
    ta.TreeCols = "第一列|第二列" '指定用于生成目录树的列
1    ta.SourceCols = "第一列|第三列|第二列" '指定数据来源列
2    ta.ReceiveCols = "第一列|第三列|第二列" '指定数据接收列
3    ta.SourceCols = "第一列|第二列|第三列" '指定数据来源列
4    ta.ReceiveCols = "第一列|第二列|第三列" '指定数据接收列
      Tables("表A").Cols("第一列").DropTree = ta.Build()
end if
如果用3、4行代码,则在表A第一行选择输入B,第三列为“是”,再在第一行选择输入C,第三列的“是”不会变成空白
如果用1、2行代码,则在表A第一行选择输入B,第三列为“是”,再在第一行选择输入C,第三列的“是”会变成空白
记得要切换表格让目录树更新

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


加好友 发短信
等级:贵宾 帖子:35433 积分:178524 威望:0 精华:3 注册:2013/3/30 16:36:00
  发帖心情 Post By:2013/7/25 15:01:00 [只看该作者]

既然简单 你做个例子不是很快吗?

本人愚钝感觉看起来确实很费劲,有例子直观一点.

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


加好友 发短信
等级:管理员 帖子:47448 积分:251054 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2013/7/25 15:30:00 [只看该作者]

呵呵,我按照3楼说的测试了一下,似乎确实有问题,下次更新前我检查一下。


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


加好友 发短信
等级:四尾狐 帖子:977 积分:6835 威望:0 精华:0 注册:2012/4/2 21:49:00
  发帖心情 Post By:2013/7/25 15:32:00 [只看该作者]

谢谢狐爸!因为帮助的例子是区号、邮编,每一行的数据是完整的,没有空白,所以不会发现问题。
[此贴子已经被作者于2013-7-25 15:36:45编辑过]

 回到顶部