注册 登录
编程论坛 VB6论坛

VB如何按照时间段查询数据库内的数据,内有代码,请更正一下!!

yflovevb01 发布于 2017-08-14 13:06, 4876 次点击
我用下面这一段代码查询我的数据库

Private Sub Command1_Click()
yybs = Left(Format(DTPicker2.Value, "short date"), 4) _
           + Right(Left(Format(DTPicker2.Value, "short date"), 7), 2) _
           + Right(Format(DTPicker2.Value, "short date"), 2)
yybz = Left(Format(DTPicker2.Value, "short date"), 4) _
           + Right(Left(Format(DTPicker2.Value, "short date"), 7), 2) _
           + Right(Format(DTPicker2.Value, "short date"), 2)
           If Val(yybs) > Val(yybz) Then
           MsgBox "开始时间不能超过截至时间", , "信息提示"
           DTPicker2.SetFocus
           Exit Sub
           End If
           Adodc1.RecordSource = "select*from 营业表 where 日期 between'" _
                            + Str(DTPicker1.Value) + "'and'" _
                            + Str(DTPicker2.Value) + "'order by 日期"
           Adodc1.Refresh
           Set MSHFlexGrid1.DataSource = Adodc1
End Sub



这个是按时间段查询的一个代码  出现了一个严重的问题
比如我查8月1到8月14
出现的就是8月1和8月10以后的数据
8月2到8月9的数据查询不到!!
4 回复
#2
ZHRXJR2017-08-14 14:12
Adodc1.RecordSource = "select * from 营业表 where 日期>='" & Str(DTPicker1.Value) & "' And 日期<='" & Str(DTPicker2.Value) & "' order by 日期"
DTPicker1.Value 的值应该是日期的下限,DTPicker2.Value 的值是日期的上限,不知道你的具体数据,不清楚你上面的 yybs =...... 语句 与 yybz =....... 语句的意图。
#3
xiangyue05102017-08-14 17:02
看代码应该是没有什么错误的,可能有两种情况
1. 确实没有8月2到8月9的数据—— 请检查数据表中的数据
2. 有8月2到8月9的数据,但是书写的格式有问题,或者字段类型不是类型datetime(我印象中好像是其他类型的会有点问题)—— 请检查数据表中的数据和字段类型
#4
ZHRXJR2017-08-14 19:40
回复 3楼 xiangyue0510
看代码 DTPicker1.Value 与 DTPicker2.Value 好像是字符数据,应该不支持 between 吧。
#5
xiangyue05102017-08-15 08:53
以下是引用ZHRXJR在2017-8-14 19:40:20的发言:

看代码 DTPicker1.Value 与 DTPicker2.Value 好像是字符数据,应该不支持 between 吧。

这个没注意, between用的不多。那就转换类型呗。
楼主这个问题,我感觉就是数据类型的问题。
1