Foxtable(狐表)用户栏目专家坐堂 → 副表问题求助版主?


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

主题:副表问题求助版主?

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


加好友 发短信
等级:童狐 帖子:219 积分:1687 威望:0 精华:0 注册:2016/4/14 9:45:00
副表问题求助版主?  发帖心情 Post By:2018/12/25 22:05:00 [显示全部帖子]

1、表1,有20列,1000行,在窗口1中;
2、表2(表1 的副表),取表1中的10列,在窗口2中;
3、都有“是否合格”列,想实现在窗口2 中的表2只显示“合格”的行,这已实现。

问题:我如果在表2 中的某列右击后选择“取消筛选”,那么会显示表1中的所有行,关闭窗口重新打开又正常了,这是为什么原因?请版主指教!

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


加好友 发短信
等级:童狐 帖子:219 积分:1687 威望:0 精华:0 注册:2016/4/14 9:45:00
  发帖心情 Post By:2018/12/25 22:53:00 [显示全部帖子]

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:我的项目.rar

版主给看看,现在是窗口中的控件只能在其中1个窗口中正常,前提是先打开这个窗口,比如总人数之类的,另外象“工作单位”等在“查询”上也不起作用了;

[此贴子已经被作者于2018/12/25 22:58:43编辑过]

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


加好友 发短信
等级:童狐 帖子:219 积分:1687 威望:0 精华:0 注册:2016/4/14 9:45:00
  发帖心情 Post By:2018/12/25 23:42:00 [显示全部帖子]

版主,情况还是一样,右击某列,就又不行了,我后面还会有几个窗口,几个副表。
我如果想选某个公司查询一下,也没有反应
[此贴子已经被作者于2018/12/25 23:49:54编辑过]

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


加好友 发短信
等级:童狐 帖子:219 积分:1687 威望:0 精华:0 注册:2016/4/14 9:45:00
  发帖心情 Post By:2018/12/26 11:43:00 [显示全部帖子]


图片点击可在新窗口打开查看此主题相关图片如下:正常界面.png
图片点击可在新窗口打开查看
这是“技师高技理论”窗口中表的正常显示,但随意右击某列,选择“取消筛选”,就变成了下面的界面,补考的人员也显示出来了

 


图片点击可在新窗口打开查看此主题相关图片如下:不正常界面.png
图片点击可在新窗口打开查看
这个不知是为什么

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


加好友 发短信
等级:童狐 帖子:219 积分:1687 威望:0 精华:0 注册:2016/4/14 9:45:00
  发帖心情 Post By:2018/12/27 1:59:00 [显示全部帖子]

图片点击可在新窗口打开查看图片点击可在新窗口打开查看图片点击可在新窗口打开查看谢谢甜版!看来还是有办法可想的!
             方法三可能更能达成我想要的结果:只对“鉴定等级”列禁止[取消筛选],其它列还是照常可以用到[取消筛选],只是看帮助,这代码还是没能理解。

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


加好友 发短信
等级:童狐 帖子:219 积分:1687 威望:0 精华:0 注册:2016/4/14 9:45:00
  发帖心情 Post By:2018/12/27 20:54:00 [显示全部帖子]

图片点击可在新窗口打开查看貌似没起作用,打开副表所在窗口后,右击窗口中副表的任意某列,选择“取消筛选”,所有的行都出来了

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


加好友 发短信
等级:童狐 帖子:219 积分:1687 威望:0 精华:0 注册:2016/4/14 9:45:00
  发帖心情 Post By:2018/12/27 22:07:00 [显示全部帖子]

图片点击可在新窗口打开查看图片点击可在新窗口打开查看图片点击可在新窗口打开查看
msgbox(e.Table.name)
If e.Table.name = "鉴定管理表" Then
    Dim fl As String = "鉴定等级='123'"
    If e.Table.Filter = "" Then
        e.filter = fl
    ElseIf e.Table.filter.IndexOf(fl) < 0 Then '如果没有包括雇员条件
        e.Filter = e.Table.filter & " And " & fl
    End If    
End If

msgbox(e.filter)
您给看看,这样对不对?弹出信息是对对应当前的副表,但对当前窗口中的副表中的任意某列进行右击后选择“取消筛选”,就又显示主表的所有行了

图片点击可在新窗口打开查看貌似我的理解出了点问题,123要改成条件!
[此贴子已经被作者于2018/12/27 22:09:36编辑过]

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


加好友 发短信
等级:童狐 帖子:219 积分:1687 威望:0 精华:0 注册:2016/4/14 9:45:00
  发帖心情 Post By:2018/12/27 22:42:00 [显示全部帖子]

msgbox(e.Table.name)
If e.Table.name = "中高级工资审_Table1" Then
    Dim fl As String = "鉴定等级 in ('高级工','中级工')"
    If e.Table.Filter = "" Then
        e.filter = fl
    ElseIf e.Table.filter.IndexOf(fl) < 0 Then '如果没有包括雇员条件
        e.Filter = e.Table.filter & " And " & fl
    End If    
End If
If e.Table.name = "技师高技资审_Table1" Then
    Dim fl As String = "鉴定等级 in ('技师','高级技师')"
    If e.Table.Filter = "" Then
        e.filter = fl
    ElseIf e.Table.filter.IndexOf(fl) < 0 Then '如果没有包括雇员条件
        e.Filter = e.Table.filter & " And " & fl
    End If    
End If
msgbox(e.filter)

总算是可以了,接下来还有7、8个窗口及7、8个副表,是不是代码就象上面那样,直接重复,改下条件?能否精减?
因为各个窗口中都有“总人数、男、女”等文本框,代码上大体相同,除了窗口名、副表名不一样,如能精减,那在代码总量是会少很多
象下面的代码:
If e.DataCol.Name = "鉴定等级" Then
    If Forms("报名登记汇总").Opened Then
        Forms("报名登记汇总").Controls("总人数").Text = e.DataTable.Compute("count(姓名)",Tables("报名登记汇总_Table1").filter)
        Forms("报名登记汇总").Controls("初级工").Text = e.DataTable.Compute("count(姓名)", "鉴定等级 = '初级工' And " & iif(Tables("鉴定管理表").filter>"",Tables("鉴定管理表").filter,"1=1"))
        Forms("报名登记汇总").Controls("中级工").Text = e.DataTable.Compute("count(姓名)", "鉴定等级 = '中级工' And " & iif(Tables("鉴定管理表").filter>"",Tables("鉴定管理表").filter,"1=1"))
        Forms("报名登记汇总").Controls("高级工").Text = e.DataTable.Compute("count(姓名)", "鉴定等级 = '高级工' And " & iif(Tables("鉴定管理表").filter>"",Tables("鉴定管理表").filter,"1=1"))
        Forms("报名登记汇总").Controls("技师").Text = e.DataTable.Compute("count(姓名)", "鉴定等级 = '技师' And " & iif(Tables("鉴定管理表").filter>"",Tables("鉴定管理表").filter,"1=1"))
        Forms("报名登记汇总").Controls("高级技师").Text = e.DataTable.Compute("count(姓名)", "鉴定等级 = '高级技师' And " & iif(Tables("鉴定管理表").filter>"",Tables("鉴定管理表").filter,"1=1"))
        Forms("报名登记汇总").Controls("男").Text = e.DataTable.Compute("count(姓名)", "性别 = '男' And " & iif(Tables("鉴定管理表").filter>"",Tables("鉴定管理表").filter,"1=1"))
        Forms("报名登记汇总").Controls("女").Text = e.DataTable.Compute("count(姓名)", "性别 = '女' And " & iif(Tables("鉴定管理表").filter>"",Tables("鉴定管理表").filter,"1=1"))
    ElseIf Forms("技师高技理论").Opened Then
        Forms("技师高技理论").Controls("总人数").Text = e.DataTable.Compute("count(姓名)",Tables("技师高技理论_Table1").filter)
        Forms("技师高技理论").Controls("初级工").Text = e.DataTable.Compute("count(姓名)", "鉴定等级 = '初级工' And " & iif(Tables("技师高技理论_Table1").filter>"",Tables("技师高技理论_Table1").filter,"1=1"))
        Forms("技师高技理论").Controls("中级工").Text = e.DataTable.Compute("count(姓名)", "鉴定等级 = '中级工' And " & iif(Tables("技师高技理论_Table1").filter>"",Tables("技师高技理论_Table1").filter,"1=1"))
        Forms("技师高技理论").Controls("高级工").Text = e.DataTable.Compute("count(姓名)", "鉴定等级 = '高级工' And " & iif(Tables("技师高技理论_Table1").filter>"",Tables("技师高技理论_Table1").filter,"1=1"))
        Forms("技师高技理论").Controls("技师").Text = e.DataTable.Compute("count(姓名)", "鉴定等级 = '技师' And " & iif(Tables("技师高技理论_Table1").filter>"",Tables("技师高技理论_Table1").filter,"1=1"))
        Forms("技师高技理论").Controls("高级技师").Text = e.DataTable.Compute("count(姓名)", "鉴定等级 = '高级技师' And " & iif(Tables("技师高技理论_Table1").filter>"",Tables("技师高技理论_Table1").filter,"1=1"))
        Forms("技师高技理论").Controls("男").Text = e.DataTable.Compute("count(姓名)", "性别 = '男' And " & iif(Tables("技师高技理论_Table1").filter>"",Tables("技师高技理论_Table1").filter,"1=1"))
        Forms("技师高技理论").Controls("女").Text = e.DataTable.Compute("count(姓名)", "性别 = '女' And " & iif(Tables("技师高技理论_Table1").filter>"",Tables("技师高技理论_Table1").filter,"1=1"))
    ElseIf Forms("中高级工资审").Opened Then
        Forms("技师高技理论").Controls("总人数").Text = e.DataTable.Compute("count(姓名)",Tables("技师高技理论_Table1").filter)
        Forms("技师高技理论").Controls("初级工").Text = e.DataTable.Compute("count(姓名)", "鉴定等级 = '初级工' And " & iif(Tables("技师高技理论_Table1").filter>"",Tables("技师高技理论_Table1").filter,"1=1"))
        Forms("技师高技理论").Controls("中级工").Text = e.DataTable.Compute("count(姓名)", "鉴定等级 = '中级工' And " & iif(Tables("技师高技理论_Table1").filter>"",Tables("技师高技理论_Table1").filter,"1=1"))
        Forms("技师高技理论").Controls("高级工").Text = e.DataTable.Compute("count(姓名)", "鉴定等级 = '高级工' And " & iif(Tables("技师高技理论_Table1").filter>"",Tables("技师高技理论_Table1").filter,"1=1"))
        Forms("技师高技理论").Controls("技师").Text = e.DataTable.Compute("count(姓名)", "鉴定等级 = '技师' And " & iif(Tables("技师高技理论_Table1").filter>"",Tables("技师高技理论_Table1").filter,"1=1"))
        Forms("技师高技理论").Controls("高级技师").Text = e.DataTable.Compute("count(姓名)", "鉴定等级 = '高级技师' And " & iif(Tables("技师高技理论_Table1").filter>"",Tables("技师高技理论_Table1").filter,"1=1"))
        Forms("技师高技理论").Controls("男").Text = e.DataTable.Compute("count(姓名)", "性别 = '男' And " & iif(Tables("技师高技理论_Table1").filter>"",Tables("技师高技理论_Table1").filter,"1=1"))
        Forms("技师高技理论").Controls("女").Text = e.DataTable.Compute("count(姓名)", "性别 = '女' And " & iif(Tables("技师高技理论_Table1").filter>"",Tables("技师高技理论_Table1").filter,"1=1"))
        
    End If
End If

If Forms("报名登记汇总").Opened Then
    Forms("报名登记汇总").Controls("总人数").Text = e.Table.Compute("count(姓名)")
    Forms("报名登记汇总").Controls("初级工").Text = e.Table.Compute("count(姓名)", "鉴定等级 = '初级工'")
    Forms("报名登记汇总").Controls("中级工").Text = e.Table.Compute("count(姓名)", "鉴定等级 = '中级工'")
    Forms("报名登记汇总").Controls("高级工").Text = e.Table.Compute("count(姓名)", "鉴定等级 = '高级工'")
    Forms("报名登记汇总").Controls("技师").Text = e.Table.Compute("count(姓名)", "鉴定等级 = '技师'")
    Forms("报名登记汇总").Controls("高级技师").Text = e.Table.Compute("count(姓名)", "鉴定等级 = '高级技师'")
    Forms("报名登记汇总").Controls("男").Text = e.Table.Compute("count(姓名)", "性别 = '男'")
    Forms("报名登记汇总").Controls("女").Text = e.Table.Compute("count(姓名)", "性别 = '女'")
End If
If Forms("技师高技理论").Opened Then
    Forms("技师高技理论").Controls("总人数").Text = e.Table.Compute("count(姓名)")
    Forms("技师高技理论").Controls("初级工").Text = e.Table.Compute("count(姓名)", "鉴定等级 = '初级工'")
    Forms("技师高技理论").Controls("中级工").Text = e.Table.Compute("count(姓名)", "鉴定等级 = '中级工'")
    Forms("技师高技理论").Controls("高级工").Text = e.Table.Compute("count(姓名)", "鉴定等级 = '高级工'")
    Forms("技师高技理论").Controls("技师").Text = e.Table.Compute("count(姓名)", "鉴定等级 = '技师'")
    Forms("技师高技理论").Controls("高级技师").Text = e.Table.Compute("count(姓名)", "鉴定等级 = '高级技师'")
    Forms("技师高技理论").Controls("男").Text = e.Table.Compute("count(姓名)", "性别 = '男'")
    Forms("技师高技理论").Controls("女").Text = e.Table.Compute("count(姓名)", "性别 = '女'")
End If
If Forms("中高级工资审").Opened Then
    Forms("中高级工资审").Controls("总人数").Text = e.Table.Compute("count(姓名)")
    Forms("中高级工资审").Controls("初级工").Text = e.Table.Compute("count(姓名)", "鉴定等级 = '初级工'")
    Forms("中高级工资审").Controls("中级工").Text = e.Table.Compute("count(姓名)", "鉴定等级 = '中级工'")
    Forms("中高级工资审").Controls("高级工").Text = e.Table.Compute("count(姓名)", "鉴定等级 = '高级工'")
    Forms("中高级工资审").Controls("技师").Text = e.Table.Compute("count(姓名)", "鉴定等级 = '技师'")
    Forms("中高级工资审").Controls("高级技师").Text = e.Table.Compute("count(姓名)", "鉴定等级 = '高级技师'")
    Forms("中高级工资审").Controls("男").Text = e.Table.Compute("count(姓名)", "性别 = '男'")
    Forms("中高级工资审").Controls("女").Text = e.Table.Compute("count(姓名)", "性别 = '女'")
End If

[此贴子已经被作者于2018/12/27 22:44:44编辑过]

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


加好友 发短信
等级:童狐 帖子:219 积分:1687 威望:0 精华:0 注册:2016/4/14 9:45:00
  发帖心情 Post By:2018/12/27 22:47:00 [显示全部帖子]

是不是可以把相应代码直接写入对应窗口中的AfterLoad事件里?,比如计算“总人数”等

 回到顶部