想实现取某一天内所有到宾馆来登记人的名单
预订时间选取的是2003-8-26日时间段
在dtpicker的change事件里如下代码
Dim SQL As String
 SQL = "select 姓名 from 查询10 where format(预订时间,'YYYY-MM-DD')<'" + CStr(DTPicker1.Value) + "'"
执行这句时可以找到记录 
但是变为
SQL = "select 姓名 from 查询10 where format(预订时间,'yyyy-mm-dd')<" + CStr(DTPicker1.Value) + " and  format(预订时间,'yyyy-mm-dd')>" + CStr(DTPicker1.Value - 1) + ""
后就报类型不匹配 查不到记录了 
究竟是怎么回事

解决方案 »

  1.   

    SQL = "select 姓名 from 查询10 where format(预订时间,'yyyy-mm-dd')<" & CStr(DTPicker1.Value) & " and  format(预订时间,'yyyy-mm-dd')>" & CStr(DTPicker1.Value - 1) & ""试试
      

  2.   

    虽然没有报类型匹配错误了 但是还是找不到记录
    我数据里预定时间记录是类似这些
    2003-8-26 15:30:00
    2003-8-27 19:30:00
    2003-8-26 16:30:00
    2003-8-26 18:30:00
    2003-8-26 20:30:00
    2003-8-27 1:30:00
    是access数据库里日期型格式
    选的dtpicker1的值是2003-8-26
    执行的语句是
    Set RS = ConHotel.Execute(SQL)
    MsgBox RS.RecordCount
    Set DataGrid1.DataSource = RS
    DataGrid1.Refresh
    If RS.EOF = True Then
    MsgBox "ERROR!"
    Exit Sub
    End If
      

  3.   

    aql语句中日期时间要用##,如是98系统要将短日期设置为yyyy-m-d
      

  4.   

    VB传送到Access中的日期要用"#"括住.
      

  5.   

    看看access 里的日期类型是否设定为短日起
      

  6.   

    应该是:SQL = "select 姓名 from 查询10 where format(预订时间,'yyyy-mm-dd')<'" + CStr(DTPicker1.Value) + "' and  format(预订时间,'yyyy-mm-dd')>'" + CStr(DTPicker1.Value - 1) + "'"   试试看吧!
      

  7.   

    SQL語句可用Format嗎?应该是:
    SQL = "select 姓名 from 查询10 where 预订时间<convert(datetime,'" + CStr(DTPicker1.Value) + "',103) and  预订时间>convert(datetime,'" + CStr(DTPicker1.Value - 1) + "',103)" 
    试试看吧!
      

  8.   

    很遗憾 取出来的都是空记录
    后来用
    SQL = "SELECT 姓名 FROM 查询10 WHERE DateDiff('d', Format(预订时间, 'YYYY-MM-DD')," + CStr(DTPicker1.Value) + ")=0"
    来判断 即使为真
    在conhotel.execute(sql) 执行后还是取不到一条记录
    到底是什么原因?
      

  9.   

    SQL = "SELECT 姓名 FROM 查询10 WHERE DateDiff('d', Format(预订时间, 'YYYY-MM-DD'),'" + CStr(DTPicker1.Value) + "')=0"DTPicker1.Value 是字符串,要用单引号或双引号括起来。
      

  10.   

    应该改成这样,若"预订时间"是日期值,则不需要用Format函数SQL = "select 姓名 from 查询10 where 预订时间<#" & CStr(DTPicker1.Value) & "#  and  预订时间>#" & CStr(DTPicker1.Value - 1) & "# "
      

  11.   

    参考一下如下语句:
      DATA1.RECORDSOURE="SELECT * FROM GZMX WHERE GZMX.DATAE BETWEEN"+CHR(35)+DTPICKER1.VALUE+CHR(35)+"AND"+CHR(35)+DTPICKER2.VALUE+CHR(35)
    此语句是一个销售系统的日期查询语句,希望对你有帮助
      

  12.   

    用 DATEDIFF 函数最好,,谢谢各位解答,,爱你们