我的代码提示如下错误,哪位大侠帮我改改代码,重分感谢run-time error '7004':
the rowset is not bookable.我的窗体代码如下:
Option Explicit
Dim strSql As StringPrivate Sub Combo1_Click()
    If Rs.State = adStateOpen Then Rs.Close
    strSql = "select * from " & Combo1.Text
    Rs.Open strSql, con, adOpenDynamic, adLockReadOnly
    Set DataGrid1.DataSource = Rs
End SubPrivate Sub Form_Load()
    Combo1.AddItem "Department"
    Combo1.AddItem "Employee"
    Combo1.AddItem "Operator"
    Combo1.AddItem "AccountType"
    Combo1.AddItem "Customer"
    Combo1.AddItem "ATMCard"
    Combo1.AddItem "CheckBookDetails"
    Combo1.AddItem "TransactionsOfAccount"
    Combo1.AddItem "TransactionOfCheckBook"
    Combo1.AddItem "TransactionOfATMCard"    Call connectionSQLServer//为模块代码,见下
End Sub另外模块代码如下
Public strServerName As String
Public strOperator As String
Public LoginSucceeded As Boolean
Public con As Connection
Public Rs As Recordset
Public com As CommandPublic Sub getSQLServerName()
    If GetSetting("OnlineBankingDB", "SQL Server Name", "ServerName") = "" Then
        strServerName = InputBox("请输入数据库服务器名称")
        SaveSetting "OnlineBankingDB", "SQL Server Name", "ServerName", strServerName
    Else
        strServerName = GetSetting("OnlineBankingDB", "SQL Server Name", "ServerName")
    End If
End SubPublic Sub connectionSQLServer()
    Set con = New Connection
    Set Rs = New Recordset
    Set com = New Command
    
    On Error GoTo errorhandler
    Call getSQLServerName
    
    Set con = New Connection
    With con
        .Provider = "sqloledb"
        .ConnectionString = "user id=sa;" & _
        "password=810614;" & _
        "data source=" & strServerName & _
        ";initial catalog=OnlineBankingDB"
        .Open
    End With
    
    com.ActiveConnection = con
    Exit Sub
errorhandler:
   MsgBox Err.Number & Err.Source & Err.Description
End Sub

解决方案 »

  1.   

    游标使用问题,将Rs.Open strSql, con, adOpenDynamic, adLockReadOnly
    改成Rs.Open strSql, con, adOpenStatic, adLockOptimistic
      

  2.   

    Option Explicit
    Dim strSql As String
    Private Sub Combo1_Click()
        If Rs.State = adStateOpen Then Rs.Close
        strSql = "select * from " & Combo1.Text
        con.CursorLocation = adUseClient//必须
        Rs.Open strSql, con, adOpenDynamic, adLockOptimistic
        Set DataGrid1.DataSource = Rs
    End SubPrivate Sub Form_Load()
        Combo1.AddItem "Department"
        Combo1.AddItem "Employee"
        Combo1.AddItem "Operator"
        Combo1.AddItem "AccountType"
        Combo1.AddItem "Customer"
        Combo1.AddItem "ATMCard"
        Combo1.AddItem "CheckBookDetails"
        Combo1.AddItem "TransactionsOfAccount"
        Combo1.AddItem "TransactionOfCheckBook"
        Combo1.AddItem "TransactionOfATMCard"    Call connectionSQLServer
    End Sub