Foxtable(狐表)用户栏目专家坐堂 → 在出生日期列查询过生日的人


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

主题:在出生日期列查询过生日的人

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


加好友 发短信
等级:管理员 帖子:47448 积分:251054 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2012/2/28 8:02:00 [显示全部帖子]


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


加好友 发短信
等级:管理员 帖子:47448 积分:251054 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2012/2/28 11:55:00 [显示全部帖子]

假定有个员工表,有姓名和出生日期列,希望能够筛选出今天生日的行,代码为:

 

Dim nms As String
For Each
dr As DataRow In DataTables("员工").DataRows
    Dim
dt As Date = dr("出生日期")
    If
dt.Month = Date.Today.Month AndAlso Date.Today.Day Then
        nms
= nms & ",'" & dr("姓名") & "'"
    End If
Next
If
nms > "" Then
    nms
= nms.Trim(",")
    Tables(
"员工").filter = "[姓名] In (" & nms &")
"
End If

 

如果希望筛选出未来七天内生日的员工,代码为:

 

Dim nms As String
For Each
dr As DataRow In DataTables("员工").DataRows
    Dim
dt As Date = dr("出生日期")
    dt
= New Date(Date.Today.Year,dt.Month,dt.Day)
    If
dt >= Date.Today AndAlso dt < Date.Today.AddDays(6) Then
        nms
= nms & ",'" & dr("姓名") & "'"
    End If
Next
If
nms > "" Then
    nms
= nms.Trim(",")
    Tables(
"员工").filter = "[姓名] In (" & nms &")"
End If

 

上面的代码有漏洞,假定有两个张三,其中一个张三今天生日,那么执行上述代码之后,两个张三都会显示出来,尽管另一个张三并不是今天生日。

要解决这个问题,可以参考下面的代码,同样以筛选出今天生日的员工为例:

 

Dim ids As String
For Each
dr As DataRow In DataTables("员工").DataRows
    Dim
dt As Date = dr("出生日期")
    dt
= New Date(Date.Today.Year,dt.Month,dt.Day)
    If
dt >= Date.Today AndAlso dt < Date.Today.AddDays(6) Then
        ids
= ids & "," & dr("_Identify")
    End If
Next
If
ids > "" Then
    ids
= ids.Trim(",")
    Tables(
"员工").filter = "[_Identify] In (" & ids &")"
End If

 

由于每一行的_Identify列的内容都是不同的,同名带来的问题不复存在。

提示: 如果希望打开项目后,能自动筛选出当天生日的员工,可以将上面的代码设置在AfterOpenProject事件中。


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


加好友 发短信
等级:管理员 帖子:47448 积分:251054 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2012/3/6 9:51:00 [显示全部帖子]

From {居民信息表} Where Month([出生日期]) = "& Date.Today.Month & " and Day([出生日期]) ="  & Date.Today.Day

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


加好友 发短信
等级:管理员 帖子:47448 积分:251054 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2012/3/6 10:29:00 [显示全部帖子]

我测试征程,记得你输入的数据,要保存一下才行,因为select 是从后台提取数据。

 

 

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:管理项目311.table


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


加好友 发短信
等级:管理员 帖子:47448 积分:251054 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2012/3/8 12:05:00 [显示全部帖子]

楼主,你在命令窗口测试下面的代码:

 

Dim cmd As new SQlCommand
Dim dt As DataTable
cmd.CommandText = "Select * From {机关党支部} Where Month([出生日期]) = " & Date.Today.Month & " And Day([出生日期]) ="  & Date.Today.Day
dt = cmd.ExecuteReader
output.show(dt.DataRows.Count)


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


加好友 发短信
等级:管理员 帖子:47448 积分:251054 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2012/3/8 15:04:00 [显示全部帖子]

这个必须用代码,因为“今天”是变化的,所以条件是变化的

 回到顶部