VB+ACCESS 查询有关日期类型的数据问题
有一张表people
其中有个字段为日期型,名为birthday
现想按年龄段对记录进行查询
具体要求是:在两个文本框中输入起始年龄,查找该年龄段内的记录
f = Val(txtFrom.Text): t = Val(txtTo.Text)
rsPeople.Open "select * from people where '"& DateDiff(yyyy, Date, 出生日期) & "'>='"& f &"' and '"& DateDiff(yyyy, Date, 出生日期) & "'<='"& t &"'
出现的问题:即使我把查询中的f改成具体的数值,查询结果也会把全部记录查找出来,好像没有这个查询条件的限制。
各位高手,请问这是什么问题?该如何修改才能达到要求呢?
谢了!
问题点数:50、回复次数:5Top
1 楼shwu()回复于 2006-03-25 17:56:40 得分 30
在Access中,日期型用‘#’来表示。
另外你的比较字段birthday,怎么没出现在Where条件中呢?
DateDiff(yyyy, Date, 出生日期)中的Date指的是系统当前
日期吧,datediff函数的结果应该是个数值,而不是日期。
我推测你的两个文本框应该是输入具体的日期的吧?如果是,
应该这样写sql语句。
"select * from people where birthday between #" & f &"# and #"& t "#"
不知道对吗?Top
2 楼province_(雍昊)回复于 2006-03-25 18:11:24 得分 20
出生日期就是LZ的字段,关键是他用DATEDIFF时和他的本意不符合,T和F是两个日期,而DATEDIFF是返回两个参数之间的天数,两者牛头对马嘴。楼上用BETWEEN就很好,简单明了。Top
3 楼Crystal0523(玉乖乖)回复于 2006-03-25 18:31:57 得分 0
不好意思,我没有说清楚,感谢shwu和province_的回答。
“出生日期”是指表中的字段名
可是
文本框中输入的是具体的年龄数值,而不是日期。
请问该如何解决呢?
这里比较疑惑的还有VB中调用SQL语句连接数据库时,如果使用VB中的函数,比如date,datediff等,该如何引用呢?
再次感谢!Top
4 楼shwu()回复于 2006-03-25 19:03:33 得分 0
"select * from user datediff('y',[birthday],date())>=" &f &" and datediff('y',[birthday],date())<=" &t &""
这样可以。Top
5 楼Crystal0523(玉乖乖)回复于 2006-03-25 19:21:58 得分 0
谢谢!
不过shwu的语句有点小错误,少了个where.
我改为下面的语句,通过:
rsPeople.Open "select * from people where datediff('yyyy',[出生日期],date())>=" & f & " and datediff('yyyy',[出生日期],date())<=" & t & "", conn, 3, 1
这里的'yyyy'代表年,而'y'代表一年的天数
再次感谢!结贴!Top




