Foxtable(狐表)用户栏目专家坐堂 → [已解决]超棘手的问题啊,狐爸、高手帮我看看吧?


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

主题:[已解决]超棘手的问题啊,狐爸、高手帮我看看吧?

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


加好友 发短信
等级:三尾狐 帖子:677 积分:6228 威望:0 精华:0 注册:2012/1/20 17:53:00
[已解决]超棘手的问题啊,狐爸、高手帮我看看吧?  发帖心情 Post By:2012/8/4 22:14:00 [只看该作者]

“目录树所有节点标题集合”与“花名册表中部门名称列值集合”比较,将“花名册中部门名称列值集合”中不是属于“目录树所有节点标题集合”全部显示在table2中。这个代码怎么搞啊

 

代码出错:

-------

Dim tr As WinForm.TreeView = e.Form.Controls("TreeView1")
For Each td As WinForm.TreeNode In tr.AllNodes
     Names.Add(td.Text) 

Tables("组织架构设置_Table2").Filter = "[离职日期] IS NULL AND ( [部门名称] IS NULL Or [部门名称] NOT IN Names )"

------------


[部门名称] NOT IN Names  这个报错,Names集合里面是目录树的所有标题,IN函数格式要:[部门名称] NOT IN('A','B' )"

用Names集合不能替代。我的目录树节点标题集合数据太多了呀!不能用这个格式。那该怎么写好呢??请高手指导。先谢谢了!

 

 

问题由来:

1、外部数据库ACCESS,user数据库,里面有“花名册”表。{花名册}表,包含[员工姓名],[部门名称],[出生日期] [离职日期]等多列。

2、窗口“组织架构设置”中建立了“目录树TreeView1”,他的每个节点都是手工增加。命名方式是“部门名称”。再增加了table1,和table2两个控件。还有button1;

3、table1 的显示:通过在“目录树TreeView1”的双击事件中,添加Tables("组织架构设置_Table1").Filter ="[部门名称] = '" & e.Node.text & "' And [离职日期] Is Null",实现了:通过双击目录树节点,如“技术部”,那么table1 中,就会从“花名册”中获得“部门名称”列值为“技术部”的行的信息。

4、问题点:有的时候目录树中的节点名称由以前“技术部”修改成了“技术工程部”,但是花名册里,那个员工的部门还是“技术部”,所以目录树中,点击“技术工程部”节点,在table1 中将不能显示。

5、为了解决这个问题:增加了table2和button1,通过点击button1,将“花名册”中“部门名称”列中值,与目录树的所有节点标题作比较,如果“部门名称”列中一些值,不在目录树节点标题中,如前面举例的“技术部”,还有“空的”等,都筛选出来,显示在table2中。好将花名册表中的“技术部”改成“技术工程部”。因为可能很多,所以要做个筛选。

6、为此,编写了上面代码,就是:“目录树所有节点标题集合”与“花名册表中部门名称列值集合”比较,将“花名册中部门名称列值集合”中不是属于“目录树所有节点标题集合”全部显示在table2中。这个代码怎么搞啊

 

 

[此贴子已经被作者于2012-8-7 8:39:19编辑过]

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


加好友 发短信
等级:管理员 帖子:47497 积分:251403 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2012/8/6 8:28:00 [只看该作者]

自己合成in语句,例如:

http://www.foxtable.com/help/topics/2410.htm

 


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


加好友 发短信
等级:三尾狐 帖子:677 积分:6228 威望:0 精华:0 注册:2012/1/20 17:53:00
  发帖心情 Post By:2012/8/7 8:34:00 [只看该作者]

 狐爸,我搞定了,测试成功。谢谢!

           
        Dim Names As New List(Of String)
       
       
        Dim tr As WinForm.TreeView = e.Form.Controls("TreeView1")
       
        Dim i As Integer = 0
       
        Dim j As Integer = Tables("组织架构设置_Table2").Rows.Count - 1
        For  i = 0 To j
           
            Dim dr As Row = Tables("组织架构设置_Table2").Rows(i)
           
            For Each td As WinForm.TreeNode In tr.AllNodes
               
                If dr("部门名称") = td.Name  Then
                   
                    Names.Add(dr("_Identify"))
                   
                End If
            Next
        Next
        For Each Name As String In Names

        Next

 

 

     Dim s As String

        Dim m As String
        For k As Integer=0 To Names.Count-2
           
            m = m & Names(k) & ","
        Next
        s = m & Names(Names.Count-1)
          
        Tables("组织架构设置_Table2").Filter = "[离职日期] IS NULL AND ( [部门名称] IS NULL Or [_Identify] NOT IN ( "& s &"))"


 回到顶部