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


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

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

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By: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

 

 

 


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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2018/5/21 17:16:00 [显示全部帖子]

运行代码,参考

 

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

 


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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By: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


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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By: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


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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2018/5/22 14:42:00 [显示全部帖子]

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

 

增加三个列【初级年龄】【中级年龄】【高级年龄】,然后计算截止日期-出生年月的值,得到年龄值。

 

不会做,请把你的foxtable项目发上来。


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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2018/5/22 15:55:00 [显示全部帖子]

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

 
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


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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2018/5/24 14:42:00 [显示全部帖子]

应该是你出生年月列为空导致的吧?

 

If e.DataCol.Name = "初级#截止日期" OrElse e.DataCol.name = "出生年月" Then
    Dim dr As DataRow = e.DataRow
    If dr.IsNull("初级#截止日期") orElse 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


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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2018/5/24 16:01:00 [显示全部帖子]

请上传具体实例测试,代码没问题。

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2018/5/28 10:06:00 [显示全部帖子]

试试改成这样

 

Dim d As Date = "2018-01-01"
Dim filter As String = "([初级#截止日期]<#" & d & "# or [初级#截止日期] is null) and ([中级#截止日期]<#" & d & "# or [中级#截止日期] is null) and ([高级#截止日期]<#" & d & "# or [高级#截止日期] is null) and (初级年龄 < 50 or 初级年龄 is null) and (中级年龄 < 50 or 中级年龄 is null) and (高级年龄 < 50 or 高级年龄 is null)"
Tables("总表").filter = filter

 

或者

 

Dim d As Date = "2018-01-01"
Dim filter As String = "[初级#截止日期]>=#" & d & "# or [中级#截止日期]>=#" & d & "# or  [高级#截止日期]>=#" & d & "# or 初级年龄 >= 50 or 中级年龄 >= 50 or 高级年龄 >= 50"
Dim str = Tables("总表").DataTable.GetComboListString("_Identify", filter).replace("|", ",")
Tables("总表").filter = "_Identify not in (" & str & ")"


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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2018/5/28 15:08:00 [显示全部帖子]

1、

 

If e.DataCol.Name.contains("截止日期") Then
    Dim dr As DataRow = e.DataRow
    If dr.IsNull(e.DataCol.Name) Then

    Else
        Dim d As Date = "2018-1-1"
        Dim d1 As Date = dr(e.datacol.name)
        If d1 >= d Then
            e.datarow("备注1") = "长期有效"
        End If
    End If
End If

 

2、

 

If e.DataCol.Name.contains("截止日期") OrElse e.DataCol.name = "出生年月" Then
    Dim dr As DataRow = e.DataRow
    If dr.IsNull(e.DataCol.Name) orElse dr.IsNull("出生年月")  Then

    Else
        Dim d As Date = dr("出生年月")
        Dim d1 As Date = dr(e.datacol.name)
        Dim y As Integer = d.year

        Dim nl As Integer
        If format(d, "MMdd") <= Format(d1, "MMdd") Then
            nl = d1.year - y
        Else
            nl = d1.Year - y -1
        End If

        If nl >= 50 Then e.datarow("备注2") = "年满50周岁"
    End If
End If


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