Sub LSJKDY() '调用历史交款信息
dim  LSRQ1, LSRQ2 as dateMe.ListView10.ListItems.ClearSQL = "select * from payment where 交款时间> '" & LSRQ1 & "' and 交款时间< '" & LSRQ2 & "' and 是否交款 = '已交款'"
Call OpenConn
i = 1
    rs.Open SQL, cn, 1, 1
    On Error Resume Next
    Do While Not rs.EOF
        Set addLVW = Me.ListView10.ListItems.Add(, , i, , 1)
            addLVW.SubItems(1) = rs!交款日期
            addLVW.SubItems(2) = rs!客户
            addLVW.SubItems(3) = rs!交款性质
            addLVW.SubItems(4) = rs!房号
            addLVW.SubItems(5) = rs!会员号
            addLVW.SubItems(6) = rs!交款金额
            addLVW.SubItems(7) = rs!是否交款
            addLVW.SubItems(8) = rs!经手人
            rs.MoveNext
            i = i + 1
    Loop
    Me.labCOUNT.Caption = "共收款" & rs.RecordCount & "笔"
Call CloseConn上面这窜代码,是一个查询历史交款信息的代码
 其中LSRQ1 和 LSRQ2的数据来源于两个DTPicker控件
这个在SQL server上可以正常调用,但是换成access数据库时就报错
出现:
实时错误'-2147217913(80040e07)
标准表达式中数据类型不匹配
肯定是 “SQL = "select * from payment where 交款时间> '" & LSRQ1 & "' and 交款时间< '" & LSRQ2 & "' and 是否交款 = '已交款'"  ”这一句出错,这一句在ACCESS数据库中该如何运用啊?

解决方案 »

  1.   

    'ACCESS中时间常量用#号括起来
    SQL = "select * from payment where 交款时间> #" & LSRQ1 & "#  and  交款时间< #" & LSRQ2 & "#  and 是否交款 = '已交款'"
      

  2.   


    SQL = "select * from payment where 交款时间> #" & LSRQ1 & "# and 交款时间< #" & LSRQ2 & "# and 是否交款 = '已交款'"
      

  3.   

    SQL = "select * from payment where 交款时间 BETEEN #" & LSRQ1 & "# and #" & LSRQ2 & "#"
      

  4.   


    如果字段是日期时间型,写入时直接引用 Now(),则数据是包含时间的。要用 Between And 就必须将最后一天的时间字符串加上 "23:59:59"。而使用 >= 和 <,则起始日期自动为 0 时,结束日期为下一天(自动为 0 时)即可。
      

  5.   


    如果字段是日期时间型,写入时直接引用 Now(),则数据是包含时间的。要用 Between And 就必须将最后一天的时间字符串加上 "23:59:59"。而使用 >= 和 <,则起始日期自动为 0 时,结束日期为下一天(自动为 0 时)即可。原来如此, 受教了