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


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

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

帅哥哟,离线,有人找我吗?
有点甜
  11楼 | 信息 | 搜索 | 邮箱 | 主页 | 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项目发上来。


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


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

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

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


 回到顶部
帅哥哟,离线,有人找我吗?
wddh121
  14楼 | 信息 | 搜索 | 邮箱 | 主页 | 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”的转换无效,这是怎么回事?

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


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


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

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


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


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

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

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

 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  19楼 | 信息 | 搜索 | 邮箱 | 主页 | 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 & ")"


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


加好友 发短信
等级:婴狐 帖子:15 积分:194 威望:0 精华:0 注册:2018/4/27 0:23:00
  发帖心情 Post By:2018/5/28 12:46:00 [只看该作者]

好的,这回调出来了,之前是因为没有判断空值。老师牛人图片点击可在新窗口打开查看
老师,再麻烦您个问题,在我的“总表”里能否实现下列行为:加入两个备注列,
1、备注列1(填写证书是否“长期有效”):如果一个考生参加了不等次数的几次考试,只要有一次成绩截止日期>=2018-01-01,那么备注列1下该考生的几次记录都填写“长期有效”,否则为空。
2、备注列2(填写年满50周岁):如果一个考生的不等次考试,其任何一个证书有效期到期前年满50岁,那么他几次考试,备注列都填“年满50岁”,否则为空。

图片点击可在新窗口打开查看此主题相关图片如下:qq图片20180528125111.jpg
图片点击可在新窗口打开查看

[此贴子已经被作者于2018/5/28 12:51:56编辑过]

 回到顶部
总数 26 上一页 1 2 3 下一页