本帖最后由 yaxiya 于 2009-07-01 15:59:28 编辑

解决方案 »

  1.   

    修改成下面,行吗?Public Function ExecuteSQLOraSelect(strSQL As String) As Object
     Dim oo4oSession As Object
     '定义OraSession和OraDatabase为OLE对象
     Dim OraDatabase As Object
     '创建一个OraSession对象
    Dim OraDynaset As Object
     Set oo4oSession = CreateObject("OracleInProcServer.XOraSession")
     '通过打开一个对Oracle的连接创建数据库对象
      Set OraDatabase = oo4oSession.OpenDatabase("ORCLACSS", "Aeasure/mmgc", 0)
      Set OraDynaset = OraDatabase.CreateDynaset(strSQL, 0)
     
      'MsgBox "数据库联接成功!", vbOKOnly + vbInformation, "提示信息"
      'MsgBox OraDynaset.RecordCount
     Set ExecuteSQLOraSelect = OraDynaset
      Set OraDatabase = Nothing
      Set OraDynaset = Nothing
    End Function
      

  2.   

    我没用过这种连接方法,无非就是*.close、set *=nothing这是搜来的
     Set   OraSession=CreateObject("OracleInProcServer.XOraSession")   
      Set   OraDatabase=OraSession.DbOpenDatabase("autop","system/manager",0)   
      Set   Rs=OraDatabase.DbCreateDynaset("select   *   from   test   order   by   id   desc",4)   
        
      .....//   
        
      '关闭数据连接   
      Rs.close   
      Set   Rs=nothing   
      OraSession.close   
      Set   OraSession=nothing         
      

  3.   

    数据库连接超时了,可以将oracle的连接超时设置大一些。不过最好的习惯是处理完一批操作后就立刻关闭连接(尤其是多用户环境中),需要时再打开。