access2003中:
sql = "select * from table"
Set STS = db.OpenRecordset(sql, dbOpenDynaset, dbSQLPassThrough)
运行提示异常
把dbSQLPassThrough删掉后修改为:
sql = "select * from table"
Set STS = db.OpenRecordset(sql, dbOpenDynaset)
运行正常
请问这是为啥啊?

解决方案 »

  1.   

    你用的是ACCESS数据库连接MS SQL Server, Oracle和Sysbase数据库服务器时,使用dbSQLPassThrough选项可将命令直接发送给数据库服务器,从而减少中间件对命令的检查和解释,提高了数据库的访问性能
      

  2.   

    但是现在就是加了dbSQLPassThrough后运行出异常了啊
      

  3.   

    那意思就是说dbSQLPassThrough在access2003的OpenRecordset中就不能用了吗?
      

  4.   


    我这里在access2003的OpenRecordset中也能用dbSQLPassThroughlz的很奇怪,呵呵
      

  5.   

    lz这些天这些奇怪问题我猜可能是升级转化带来的问题,你如果新建access2003数据库可能就不会出现
      

  6.   

    我把详细source贴上来:     Dim db As Database
        Dim re As Recordset
        Set db= DBEngine.Workspaces(0).OpenDatabase("", False, True, "ODBC;UID=AAAAA;PWD=BBBBB;DSN=AAAAA_U;")
        Set re = cdb.OpenRecordset("select * from table_a", dbOpenSnapshot, dbSQLPassThrough)运行错误!
      

  7.   

    我是这么测试的,完全正常
    Private Sub Command1_Click()    Dim objDB As Database
        Dim rs As Recordset
        Dim strSql As String
        Set objDB = OpenDatabase("F:\test\test.mdb")    strSql = "SELECT * From  a where  num_t = 5;  "
        Debug.Print strSql
        Set rs = objDB.OpenRecordset(strSql, dbOpenDynaset, dbSQLPassThrough)
        Debug.Print rs.Fields(1)
        rs.Close
        Set rs = Nothing
        objDB.Close
        Set objDB = NothingEnd Sub