尝试打开前设置 Re.CacheSize = 1000

解决方案 »

  1.   

    我试过了,还是不行,难道是ado不支持那么多数据
      

  2.   

    你用的Win2000吧,可能是它在作怪。
      

  3.   

    ladorst.CursorLocation = adUseClient
    ladorst.Open strlong, Conn, 3, 3
      

  4.   

    是re.CursorLocation = adUseClient
    re.Open strlong, Conn, 3, 3
      

  5.   

    真正的问题并不在于ADO本身,肯定是你错怪它了。关键问题肯定是在于你打开数据库的方式不对。
    原因很简单:我用的数据库连接岂止两万条记录,头几天我们测试时加了三百八十多万条记录都成功取出来了--不过代价是时间长达 2 分钟,恐怕一般人受不了。
    给你一个最简单的例子参考(实际上不同的数据库可以用不同的连接方式和方法),如下:'' For Corp. Server
    Global Const G_ADO_ConStr As String = _
        "Provider=SQLOLEDB.1;User ID=User_XXX;Password=Psw_XXX;Persist Security Info=False;Initial Catalog=MIS_xxx;Data Source=SERVER_XXX"'
    ' 功     能:
    '    查询部门信息
    '
    ' 输入参数(可选)说明:
    '   None
    '
    '返回值:
    '   相应的记录集
    '
    Public Function GetDepByOptn( ) As ADODB.Recordset
        
    On Error GoTo ErrorProcess
        
        Dim strSql As String
        Dim strWhereOrAnd As String
        
        Dim Conn As ADODB.Connection
        Dim p_RS As ADODB.Recordset
        
        m_SuccessOrNot = False
        
        '' Open ADO connection
        Set Conn = New ADODB.Connection
        Set p_RS = New ADODB.Recordset
        
        '' Build SQL statement
        strSql = "SELECT * FROM T_Department "
        
        '' Open the Connection
        Conn.Open G_ADO_ConStr
        
        '' Open the recordset
        p_RS.Open strSql, Conn, adOpenStatic
        
        Set GetDepByOptn = p_RS
        
        Exit Function
      
    ErrorProcess:
      Err.Raise Err.Number & Err.Source
      Set GetDepByOptn = Nothing
    End Function
      

  6.   

    Public Function oracleconnect(sServer As String, sLoginID As String, sPassword As String) As ADODB.Connection
    On Error GoTo erroracleconnect
    Set Re = New ADODB.Recordset  '建立与数据库的连接
    Set Conn = New ADODB.Connection
    Re.CursorLocation = adUseClient
    Conn.Open "Provider=OraOLEDB.Oracle.1;Password='" & sPassword & "'; " & _
                      "Persist Security Info=True;User ID= " & _
                      " '" & sLoginID & " '" & _
                      ";Data Source=""" & sServer & """"
    Exit Function
    erroracleconnect:
    MsgBox Error, vbInformation
    End FunctionDim DataRe As New ADODB.RecordsetIf appendstr = "" Then
           MsgBox "请选择要显示的属性", vbExclamation + vbOKOnly, "错误"
    Else
       tempsql = Mid(appendstr, 1, Len(appendstr) - 1)
       Set login = oracleconnect(strserver, struid, strpwd)
       strlong = "select " & tempsql & " " & "from " & Lsttable.Text   Re.CursorLocation = adUseClient
       Re.Open strlong, Conn, 3, 3
    end if
    这是我的代码,和你的有区别吗?我觉得好像没有.
      

  7.   

    这种问题不应该是ado的问题,有时候运行程序也会有的
    可能是bug吧,我想
      

  8.   

    我用adodc和datagrid点这几个表示也会死,而换用oradc(一个oracle控件)和msflexgrid就没事,为什么呢?
      

  9.   

    不知道你用的是不是access,如果是的话,记录有一定数量上限!我曾经在我的一个系统里用就是,不知道是ado的事,还是access的事