Foxtable(狐表)用户栏目专家坐堂 → 日期筛选无法跨2013筛选代码


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

主题:日期筛选无法跨2013筛选代码

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


加好友 发短信
等级:童狐 帖子:219 积分:1890 威望:0 精华:0 注册:2011/6/10 9:12:00
日期筛选无法跨2013筛选代码  发帖心情 Post By:2013/1/20 9:17:00 [只看该作者]

Dim s As Date

Dim ids As String

Dim cnt As Integer

Dim nms As String

Syscmd.Filter.UnFilter()

s = Forms("窗口4").Controls("DateTimePicker1").value

For Each dr As DataRow In DataTables("会员信息").DataRows

   Dim dt As Date = dr("阳历生日")

   Dim dy As Date = dr("出生日期")

   dt =  New Date(s.Year,dt.Month,dt.Day)

   dy =  New Date(s.Year,dy.Month,dy.Day)

    If dt = s Or dy = s Then

        cnt = cnt + 1

        ids = ids & "," & dr("_Identify")

    End If

Next

 

If cnt > 0 Then

    Tables("会员信息").Filter = "[_Identify] In (" & ids.Trim(",") &")"

   Else

     messagebox.show("没有过生日的人")

End If
此主题相关图片如下:qq截图20130119203327.jpg
按此在新窗口浏览图片


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


加好友 发短信
等级:童狐 帖子:219 积分:1890 威望:0 精华:0 注册:2011/6/10 9:12:00
  发帖心情 Post By:2013/1/20 9:18:00 [只看该作者]

求解,为什么啊2013前都可以进行正常筛选,2013后就不行

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


加好友 发短信
等级:管理员 帖子:47497 积分:251403 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2013/1/21 9:05:00 [只看该作者]

这个和2013无关的,农历并非每天都有相同的阳历日期,反之亦然,所以你的代码存在逻辑问题,出错是才是正常的。

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


加好友 发短信
等级:狐神 帖子:6708 积分:34304 威望:0 精华:11 注册:2012/8/18 23:10:00
  发帖心情 Post By:2013/1/21 9:18:00 [只看该作者]

 楼主,你的代码,或者你的数据有问题吧?贴出你自己写的代码,上传你有的数据或者项目。

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


加好友 发短信
等级:童狐 帖子:219 积分:1890 威望:0 精华:0 注册:2011/6/10 9:12:00
  发帖心情 Post By:2013/1/22 10:28:00 [只看该作者]

狐爸我的代码要怎么修改呢

谢谢


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


加好友 发短信
等级:狐神 帖子:6708 积分:34304 威望:0 精华:11 注册:2012/8/18 23:10:00
  发帖心情 Post By:2013/1/22 10:44:00 [只看该作者]

以下是引用youyuweinihao在2013-1-22 10:28:00的发言:

狐爸我的代码要怎么修改呢

谢谢


如果之前正常的话,就不可能是代码出错了。看看你的表数据里是否有不符合规则的数据,比如空行等的。

这句
For Each dr As DataRow In DataTables("会员信息").DataRows

改成
For Each dr As DataRow In DataTables("会员信息").Select("阳历生日 is not null And 出生日期 is not null")

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


加好友 发短信
等级:童狐 帖子:219 积分:1890 威望:0 精华:0 注册:2011/6/10 9:12:00
  发帖心情 Post By:2013/1/22 10:52:00 [只看该作者]

之前是正常的

2013年以前筛选都是正常的

以换2013筛选就出错


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


加好友 发短信
等级:狐神 帖子:6708 积分:34304 威望:0 精华:11 注册:2012/8/18 23:10:00
  发帖心情 Post By:2013/1/22 11:03:00 [只看该作者]

以下是引用youyuweinihao在2013-1-22 10:52:00的发言:

之前是正常的

2013年以前筛选都是正常的

以换2013筛选就出错


嗯嗯,明白了,应该是2月29日的问题。

代码需要这样改一下。

Dim s As Date
Dim ids As String
Dim cnt As Integer
Dim nms As String
Syscmd.Filter.UnFilter()
s = Forms("窗口4").Controls("DateTimePicker1").value

For Each dr As DataRow In DataTables("会员信息").DataRows 
    Dim dt As Date = dr("阳历生日")  
    Dim dy As Date = dr("出生日期")
   
    Dim day As Integer = dt.Day
    If dt.Month = 2 AndAlso dt.Day = 29 AndAlso Date.IsLeapYear(s.Year) = False Then
        day = 28
    End If
    dt =  New Date(s.Year,dt.Month, day)

    day = dy.Day
    If dy.Month = 2 AndAlso dy.Day = 29 AndAlso Date.IsLeapYear(s.Year) = False Then
        day = 28
    End If   
    dy =  New Date(s.Year,dy.Month,day)
   
    If dt = s Or dy = s Then      
        cnt = cnt + 1     
        ids = ids & "," & dr("_Identify")     
    End If 
Next

If cnt > 0 Then 
    Tables("会员信息").Filter = "[_Identify] In (" & ids.Trim(",") &")"  
Else
    messagebox.show("没有过生日的人")
End If



 回到顶部