我把SQLserver2000的表导入Access中,然后用VB做查询,SQLserver2000中的“datetime”数据类型,到了Access中对应的是“时间/日期”数据类型,但是我的VB程序中
"select * from 表名 where time>='" & TimeBegin & "' and time<='" & TimeEnd & "' "
查SQLserver2000可以,但是查Access就出现了“标准表达式中数据类型不匹配”的错误,我的TimeBegin 、TimeEnd 都定义的是Date数据类型。
请大虾指点

解决方案 »

  1.   

    樓主,"select * from 表名 where time>='" & TimeBegin & "' and time<='" & TimeEnd & "' "中的time是指時間還是日期?
      

  2.   

    還是把TimeBegin 、TimeEnd格式成字符串試試吧,format(timebegin,"yyyy/MM/dd")
    再不行就把''換成##
      

  3.   

    在Access里面日期格式用 #MM/DD/YYYY#
      

  4.   

    time就是Access表中的一个字段名,数据类型是“日期/时间”
      

  5.   

    dim aa as date
    dim bb as date
    aa=cdate(format(TimeBegin,"yyyy-mm-dd"))
    bb=cdate(format(TimeEnd,"yyyy-mm-dd"))
    sqlstr="select * from 表名 where time between '" & aa & "' and '" & bb & "'"
      

  6.   

    Access里应该以#开始和结尾
    但SqlServer里是以'开头和结尾的
      

  7.   

    用SQL查SQL Server时,定义日期时间为 #mm/dd/yyyy hh:mm:ss#
    用SQL查Access时,定义日期时间为 #yyyy-mm-dd hh:mm:ss#
      

  8.   

    才试了一下,是因为SQL-Server能对日期串进行转换,Access容错能力要差一些。你可以这样写Access的SQL,我已经测试通过。用#"& 日期变量 &"# 取得Access的SQL语句中的值。下面是我写的例程:Private Sub Command4_Click()
    Dim dt As Datedt = #2/5/2003 11:07:05 AM#If conn.State = adStateOpen Then conn.Closeconn.Provider = "Microsoft.Jet.OLEDB.4.0"
    conn.Open "Data Source=" & App.Path & "\prtest.mdb;Persist Security Info=False"conn.CursorLocation = adUseClientSet rs = conn.Execute("select * from test where try > # " & dt & "# ", , adCmdText)Set DataGrid1.DataSource = rsEnd Sub