Private Sub Form_Load()
    Dim strConnectString As String
    Dim strUserID As String
    Dim strPassword As String
    Dim strDataSource As String
    Dim g_dbConnect As ADODB.Connection
    strDataSource = "land"
    strUserID = "sde"
    strPassword = "sde"
        strConnectString = "Provider=OraOLEDB.Oracle;" & _
                   "Data Source=" & strDataSource & _
                   ";User Id=" & strUserID & _
                   ";Password=" & strPassword
                       On Error GoTo ErrHandle
    Set g_dbConnect = New ADODB.Connection
    g_dbConnect.Open strConnectString
    bSuccess = True
    
    '记录数据库连接变量
    g_strDBSource = strDataSource
    g_strDBUser = strUserID
    g_strDBPwd = strPassword
    g_strDBConnStr = strConnectString
    Dim recSet As New ADODB.Recordset
        recSet.Open "SELECT * FROM SDE.PRODUCT_TABLE", _
                g_dbConnect, adOpenDynamic, adLockOptimistic, adCmdText
        'Dim i As Integer
        'i = 0
        'Do While (Not recSet.EOF)
        '  recSet.MoveNext
        '  i = i + 1
        'Loop
        'MsgBox i
        MsgBox recSet.RecordCount
    Unload Me
    Exit Sub
ErrHandle:
  MsgBox Err.Description, vbOKOnly + vbCritical, "失败"
  bSuccess = False
End Sub而实际上'上的是可以返回记录数的,但是如果我记录多。用这个方法就很慢了啊。

解决方案 »

  1.   

    这是我用Winsock写的 命令信息,希望对你有用,使用 wininet 也容易,最简单的方法是使用xmlhttp
    Dim strCommand As StringstrCommand = "GET " + GetFileFromURL(m_strURL) + " HTTP/1.0" + vbCrLf
    strCommand = strCommand + "Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/vnd.ms-powerpoint, application/vnd.ms-excel, application/msword, application/x-shockwave-flash, */*" + vbCrLf
    strCommand = strCommand + "Referer: " + GetHostFromURL(m_strURL) + vbCrLf
    strCommand = strCommand + "User-Agent: Mozilla/4.0 (compatible; MSIE 5.5; Windows 98; Win 9x 4.90)" + vbCrLf
    strCommand = strCommand + "Host: " + GetHostFromURL(m_strURL) + vbCrLf
    strCommand = strCommand + vbCrLf
    cmSocket.SendData strCommand下面是使用Xmlhttp的一个函数
    debug.print GetPage("http://club.5ivb.net")Public Function GetPage(ByVal URL As String)
    On Error GoTo errhand:
        Set objStream = CreateObject("adodb.stream")
        Set http = CreateObject("MSXML2.XMLHTTP")
        http.Open "GET", URL, False, "", ""
        http.setRequestHeader "Referer", URL
        http.send
        If http.readyState <> 4 Then
            Exit Function
        End If
        With objStream
            .Type = 1
            .Mode = 3
            .Open
            .Write http.responseBody
            .Position = 0
            .Type = 2
            .Charset = "GB2312"
            GetPage = objStream.ReadText
            objStream.Close
        End With
    errhand:
        Exit Function
    End Function
    Private Sub Form_Load()
        Dim strConnectString As String
        Dim strUserID As String
        Dim strPassword As String
        Dim strDataSource As String
        Dim g_dbConnect As ADODB.Connection
        strDataSource = "land"
        strUserID = "sde"
        strPassword = "sde"
            strConnectString = "Provider=OraOLEDB.Oracle;" & _
                       "Data Source=" & strDataSource & _
                       ";User Id=" & strUserID & _
                       ";Password=" & strPassword
                           On Error GoTo ErrHandle
        Set g_dbConnect = New ADODB.Connection
        g_dbConnect.Open strConnectString
        bSuccess = True
        
        '记录数据库连接变量
        g_strDBSource = strDataSource
        g_strDBUser = strUserID
        g_strDBPwd = strPassword
        g_strDBConnStr = strConnectString
        Dim recSet As New ADODB.Recordset
            recSet.Open "SELECT * FROM SDE.PRODUCT_TABLE", _
                    g_dbConnect, adOpenDynamic, adLockOptimistic, adCmdText
            'Dim i As Integer
            'i = 0
            'Do While (Not recSet.EOF)
            '  recSet.MoveNext
            '  i = i + 1
            'Loop
            'MsgBox i
    rscset.MoveLast        '加上这句就可以了
            MsgBox recSet.RecordCount
        Unload Me
        Exit Sub
    ErrHandle:
      MsgBox Err.Description, vbOKOnly + vbCritical, "失败"
      bSuccess = False
    End Sub而实际上'上的是可以返回记录数的,但是如果我记录多。用这个方法就很慢了啊。
      

  2.   

    Set g_dbConnect = New ADODB.Connection
       g_dbConnect.CursorLocation = adUseClient
       g_dbConnect.Open strConnectString
       ......
       recSet.Open "SELECT * FROM SDE.PRODUCT_TABLE", _
                    g_dbConnect, adOpenDynamic, adLockOptimistic, adCmdText
       recSet.MoveLast
      

  3.   

    打开记录集的方式不要用动态的,否则recordcount都是-1recSet.Open "SELECT * FROM SDE.PRODUCT_TABLE", _
                    g_dbConnect, adOpenStatic, adLockOptimistic, adCmdText
    应该用静态的或者是键集方式打开,才能读取到真实的recordcount
      

  4.   

    '加上个g_dbConnect.CursorLocation = adUseClient
      

  5.   

    yiway(一味) 的是正解已经调试正确了。
    也谢谢wwqna(york) ( ) 和of123() ( ) 
    不过再问1下,动态和静态对sql查询有什么区别或者影响?
      

  6.   

    tztz520(午夜逛街) ( )的方法也对啊。而且针对动态
    但是我没明白动静态的区别