rs.CursorLocation = adUseClient
rs.Open "...", cn, adOpenKeyset, adLockReadOnly

解决方案 »

  1.   

    请问马可,此句应加在何处,是不是VB修改的那个frm里面,或是sql里面??
      

  2.   

    VB中的记录集打开时,建议转VB版。
      

  3.   

    VB中的记录集打开时,建议转VB版。
      

  4.   

    ... 就是你的SQL语句, eg:  select * from 表
      

  5.   

    修改用这样试试:
    conn.execute "update tablename set ... where ..."
      

  6.   

    楼上的,我实在太菜,看不懂你的方法啊.以下使我的程序,在 myBook = mrc.Book处报错,请各位帮我看看.是否我的sql的表有问题还是程序里少了什么?能否告知修改应在何处??万分感谢!
    Private Sub Form_Load()
        
        Dim txtSQL As String
        Dim MsgText As String
        
        txtSQL = "select * from student_Info "
        Set mrc = ExecuteSQL(txtSQL, MsgText)
        
       
        mrc.MoveFirst
        Call viewData
        mcbook = mrc.Book<此处报错>
        mcclean = True
        
        Public Sub viewData()
        txtSID.Text = mrc.Fields(0)
        txtName.Text = mrc.Fields(1)
        comboSex.Text = mrc.Fields(2)
        txtBorndate.Text = Format(mrc.Fields(3), "yyyy-mm-dd")
        comboClassno.Text = mrc.Fields(4)
        txtTel.Text = mrc.Fields(5)
        txtRudate.Text = Format(mrc.Fields(6), "yyyy-mm-dd")
        txtAddress.Text = mrc.Fields(7)
        txtComment.Text = mrc.Fields(8)
    End Sub
      

  7.   

    同意一楼
    在你的ExecuteSQL过程里改
      

  8.   

    更改你的代码中的mrc为本地游标。
      

  9.   

    把连接的CursorLocation属性改为adUseClient 
    就可以了,好像只有客户端的游标支持书签属性。
      

  10.   

    cursorlocation的属性在何处修改????
      

  11.   

    右键ExecuteSQL-〉定义
    在你的ExecuteSQL过程里改
    rs.Open "...", cn, adStatic, adLockReadOnly

    conn.cursorlocation=adUseClient
      

  12.   

    Set mrc = ExecuteSQL(txtSQL, MsgText)
    --------------------------------------------------
    右边的executesql,应该还可以输入其他参数吧?如果不输入参数,则默认为服务器光标,并且是forwardonly(只能向前滚动,并且只读),应该不支持book。楼主写出这么长程序,竟然搞不清这个?
      

  13.   

    也不贴出 ExecuteSQL,捣乱!!
      

  14.   

    executeSQL如下Public fMainForm As frmMain
    Public UserName As String
    Sub Main()
        Dim fLogin As New frmLogin
        fLogin.Show vbModal
        If Not fLogin.OK Then
            'Login Failed so exit app
            End
        End If
        Unload fLogin
        Set fMainForm = New frmMain
        fMainForm.Show
    End Sub
    Public Function ConnectString() _
       As String
    'returns a DB ConnectString
       ConnectString = "Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=darkicelee;Data Source=DARKICELEE"
    End Function
    Public Function ExecuteSQL(ByVal SQL _
       As String, MsgString As String) _
       As ADODB.Recordset
    'executes SQL and returns Recordset
       Dim cnn As ADODB.Connection
       Dim rst As ADODB.Recordset
       Dim sTokens() As String
       
       On Error GoTo ExecuteSQL_Error
       
       sTokens = Split(SQL)
       Set cnn = New ADODB.Connection
       cnn.Open ConnectString
       If InStr("INSERT,DELETE,UPDATE", _
          UCase$(sTokens(0))) Then
          cnn.Execute SQL
          MsgString = sTokens(0) & _
             " query successful"
       Else
          Set rst = New ADODB.Recordset
          rst.Open Trim$(SQL), cnn, _
             adOpenKeyset, _
             adLockOptimistic
          'rst.MoveLast     'get RecordCount
          Set ExecuteSQL = rst
          MsgString = "查询到" & rst.RecordCount & _
             " 条记录 "
       End If
    ExecuteSQL_Exit:
       Set rst = Nothing
       Set cnn = Nothing
       Exit Function
       
    ExecuteSQL_Error:
       MsgString = "查询错误: " & _
          Err.Description
       Resume ExecuteSQL_Exit
    End FunctionPublic Function Testtxt(txt As String) As Boolean
        If Trim(txt) = "" Then
            Testtxt = False
        Else
            Testtxt = True
        End If
    End Function