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


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

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

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


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

beforefilter事件

 

msgbox(e.Table.name)
If e.Table.name = "表A" 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)


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


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

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

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


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

以下是引用lisheng1971在2018/12/27 20:54:00的发言:
图片点击可在新窗口打开查看貌似没起作用,打开副表所在窗口后,右击窗口中副表的任意某列,选择“取消筛选”,所有的行都出来了

 

1、看懂代码;改成你自己表名和条件啊;

 

2、不要删掉msgbox啊,看弹出的信息啊。


 回到顶部
帅哥哟,离线,有人找我吗?
lisheng1971
  14楼 | 信息 | 搜索 | 邮箱 | 主页 | 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编辑过]

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


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

1、第一个msgbox弹出什么?

 

2、根据弹出的设置红色代码啊

 

If e.Table.name = "鉴定管理表" Then
   
3、设置你最初的条件啊
 
Dim fl As String = "鉴定等级='123'"

 回到顶部
帅哥哟,离线,有人找我吗?
lisheng1971
  16楼 | 信息 | 搜索 | 邮箱 | 主页 | 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
  17楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


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

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

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


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

msgbox(e.Table.name)
Dim fl As String = ""
If e.Table.name = "中高级工资审_Table1" Then
    fl  = "鉴定等级 in ('高级工','中级工')"
ElseIf e.Table.name = "技师高技资审_Table1" Then
    fl = "鉴定等级 in ('技师','高级技师')"
End If

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

msgbox(e.filter)


 回到顶部
总数 18 上一页 1 2