以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  参加考试人员与不参加考试人员名单查询生成  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=119240)

--  作者:wddh121
--  发布时间:2018/5/21 12:26:00
--  参加考试人员与不参加考试人员名单查询生成

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

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

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

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

如何操作,谢谢。

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


--  作者:有点甜
--  发布时间:2018/5/21 15:01:00
--  

把数据导入到foxtable,然后查询。

 

1、有效期大于2018-1-1的人员

 

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

 

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

 

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

 

3、必须考试人员

 

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

 

 

 


--  作者:wddh121
--  发布时间:2018/5/21 17:15:00
--  

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

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


--  作者:有点甜
--  发布时间:2018/5/21 17:16:00
--  

运行代码,参考

 

http://www.foxtable.com/webhelp/scr/0213.htm

 


--  作者:wddh121
--  发布时间:2018/5/21 19:00:00
--  
老师非常感谢您,完美解决,接下来我将好好学习,争取自己写代码。图片点击可在新窗口打开查看再次感谢,祝您工作开心。
--  作者:wddh121
--  发布时间:2018/5/21 23:43:00
--  

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

 

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

  3、必须考试人员

 

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


--  作者:有点甜
--  发布时间:2018/5/22 9:08:00
--  

1、出生年月从身份证提取,请提前处理

 

http://www.foxtable.com/bbs/dispbbs.asp?BoardID=2&ID=118957&skin=0

 

2、同时你应该加入辅助列【初级年龄】【中级年龄】【高级年龄】

 

http://www.foxtable.com/bbs/dispbbs.asp?BoardID=2&ID=118957&skin=0

 

3、根据辅助列、截止日期列,编写条件,如

 

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


--  作者:wddh121
--  发布时间: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编辑过]

--  作者:有点甜
--  发布时间:2018/5/22 12:22:00
--  

1、出生年月从身份证提取,请提前处理

 

http://www.foxtable.com/bbs/dispbbs.asp?BoardID=2&ID=118957&skin=0

 

2、同时你应该加入辅助列【初级年龄】【中级年龄】【高级年龄】

 

http://www.foxtable.com/bbs/dispbbs.asp?BoardID=2&ID=118957&skin=0


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