Foxtable(狐表)用户栏目专家坐堂 → 参加考试人员与不参加考试人员名单查询生成


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

主题:参加考试人员与不参加考试人员名单查询生成

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


加好友 发短信
等级:婴狐 帖子:15 积分:194 威望:0 精华:0 注册:2018/4/27 0:23:00
参加考试人员与不参加考试人员名单查询生成  发帖心情 Post By:2018/5/21 12:26:00 [显示全部帖子]

老师:现在有一张成绩表,近5年考试数据3万余条,有初级、中级、高级三个考试级别;5年内有人考1次,2次、3次或者多次不同级别的考试。现需要统计:

1、如果一个人只要有一个证书的截止日期(有效期)>=2018-01-01,则保留成绩,无需再考。

2、如果不满足条件1,则判断证书有效期到期前是否年满50周岁,如果满50则不用考试,否则需要参加下次考试。

生成一张必须考试人员表和一张不需要参加考试人员表。(列基本全部保留,长期有效或者年满50周岁参记录在表中)

如何操作,谢谢。

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:成绩总表.xlsx


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


加好友 发短信
等级:婴狐 帖子:15 积分:194 威望:0 精华:0 注册:2018/4/27 0:23:00
  发帖心情 Post By:2018/5/21 17:15:00 [显示全部帖子]

老师,初学foxtable两天,就遇到这么棘手的问题,非常感谢您的帮助。

我通过 杂项——高速导入数据,把excel表“总表”导进去了,然后在数据表菜单——SQL查询表选择select语句,运行不了,能否再解答一下,非常感谢。


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


加好友 发短信
等级:婴狐 帖子:15 积分:194 威望:0 精华:0 注册:2018/4/27 0:23:00
  发帖心情 Post By:2018/5/21 19:00:00 [显示全部帖子]

老师非常感谢您,完美解决,接下来我将好好学习,争取自己写代码。图片点击可在新窗口打开查看再次感谢,祝您工作开心。

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


加好友 发短信
等级:婴狐 帖子:15 积分:194 威望:0 精华:0 注册:2018/4/27 0:23:00
  发帖心情 Post By:2018/5/21 23:43:00 [显示全部帖子]

老师,年满50周岁的计算要求是:考生取得的初级、中级、高级证书,考生在任意一个等级证书到期前过50岁生日了(年满50周岁),那么就不用再考试了。出生日期很多人填写错误,只能从身份证号中取值。

 

那么2、有效期大于2018-1-1或年满50岁的人员

  3、必须考试人员

 

的查询语句怎么写呀,自己试了半天写不出来,只能再麻烦您呢


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


加好友 发短信
等级:婴狐 帖子:15 积分:194 威望:0 精华:0 注册:2018/4/27 0:23:00
  发帖心情 Post By:2018/5/22 12:18:00 [显示全部帖子]

老师,我这样写:

必须考试人员

Dim d As Date = "2018-01-01"
Dim filter As String = "not ([初级#截止日期]>=#" & d & "# or [中级#截止日期]>=#" & d & "# or  [高级#截止日期]>=#" & d & "# or 出生年月 >([初级#截止日期] .AddYears(-50) or 出生年月 >[中级#截止日期] .AddYears(-50)  or 出生年月 >([高级#截止日期] .AddYears(-50))"
Tables("test").filter = filter

执行命令显示未定义>[初级#截止日期] ....>[中级#截止日期].....>[高级#截止日期]

您帮我修改一下,看这样做行不。就是出生日期加50年后与每一个截止日期作比较,没有超过截止日期的就可以免考。

[此贴子已经被作者于2018/5/22 12:18:35编辑过]

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


加好友 发短信
等级:婴狐 帖子:15 积分:194 威望:0 精华:0 注册:2018/4/27 0:23:00
  发帖心情 Post By:2018/5/22 13:31:00 [显示全部帖子]

身份证号已经提取出来了,就是没明白您说的辅助列怎么弄。图片点击可在新窗口打开查看麻烦您写个代码吧,自己试了好多变都不对。图片点击可在新窗口打开查看我边学边用,有点不懂,请原谅。

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


加好友 发短信
等级:婴狐 帖子:15 积分:194 威望:0 精华:0 注册:2018/4/27 0:23:00
  发帖心情 Post By:2018/5/22 14:59:00 [显示全部帖子]

不好意思呀老师,这个数据不能外传,按您说的我把出生日期已经提取出来了。现在增加了三个列【初级年龄】【中级年龄】【高级年龄】,这三个的DataColChanged事件怎么写呀,拜托了,下午领导就要结果了。这三个列的数据写入了我就可以按您之前给的命令查询出来了。谢谢,拜托

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


加好友 发短信
等级:婴狐 帖子:15 积分:194 威望:0 精华:0 注册:2018/4/27 0:23:00
  发帖心情 Post By:2018/5/24 13:16:00 [显示全部帖子]

If e.DataCol.Name = "初级#截止日期" OrElse e.DataCol.name = "出生年月" Then
    Dim dr As DataRow = e.DataRow
    If dr.IsNull("初级#截止日期") Then
        dr("初级年龄") = Nothing
    Else
        Dim d As Date = dr("出生年月")
        Dim d1 As Date = dr("初级#截止日期")
        Dim y As Integer = d.year
        If format(d, "MMdd") <= Format(d1, "MMdd") Then
            e.DataRow("年龄") = d1.year - y
        Else
            e.DataRow("年龄") = d1.Year - y -1
        End If
    End If
End If
老师,运行这个程序时,截止日期为空时,调用目标发生异常,从字符串“”到类型“date”的转换无效,这是怎么回事?

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


加好友 发短信
等级:婴狐 帖子:15 积分:194 威望:0 精华:0 注册:2018/4/27 0:23:00
  发帖心情 Post By:2018/5/24 14:59:00 [显示全部帖子]

出生日期我全部计算出来了,是因为截止日期,如果考试成绩没有合格的话那么“截止日期”(所取得的证书的有效期)就是空的。完了出现如图的问题。
图片点击可在新窗口打开查看此主题相关图片如下:qq图片20180524145341.jpg
图片点击可在新窗口打开查看


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


加好友 发短信
等级:婴狐 帖子:15 积分:194 威望:0 精华:0 注册:2018/4/27 0:23:00
  发帖心情 Post By:2018/5/28 9:09:00 [显示全部帖子]

老师,您说的对,别人提供给我的3万多基础数据有错误,这几逐一修改,终于正确。
现在又有个问题:就是(免于考试人员)+(需要参加考试人员)总数不等于我的总表,两者相加少了400人,您能看看是怎么回事吗?
1、免于考试人员:
Dim d As Date = "2018-01-01"
Dim filter As String = "[初级#截止日期]>=#" & d & "# or [中级#截止日期]>=#" & d & "# or  [高级#截止日期]>=#" & d & "# or 初级年龄 >= 50 or 中级年龄 >= 50 or 高级年龄 >= 50"
Tables("总表").filter = filter
2、需要参加考试人员:
Dim d As Date = "2018-01-01"
Dim filter As String = "not([初级#截止日期]>=#" & d & "# or [中级#截止日期]>=#" & d & "# or  [高级#截止日期]>=#" & d & "# or 初级年龄 >= 50 or 中级年龄 >= 50 or 高级年龄 >= 50)"
Tables("总表").filter = filter

 回到顶部
总数 15 1 2 下一页