Set mrc = ExecuteSQL(txtSQL, MsgText) -------------------------------------------------- 右边的executesql,应该还可以输入其他参数吧?如果不输入参数,则默认为服务器光标,并且是forwardonly(只能向前滚动,并且只读),应该不支持book。楼主写出这么长程序,竟然搞不清这个?
也不贴出 ExecuteSQL,捣乱!!
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
conn.execute "update tablename set ... where ..."
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
在你的ExecuteSQL过程里改
就可以了,好像只有客户端的游标支持书签属性。
在你的ExecuteSQL过程里改
rs.Open "...", cn, adStatic, adLockReadOnly
或
conn.cursorlocation=adUseClient
--------------------------------------------------
右边的executesql,应该还可以输入其他参数吧?如果不输入参数,则默认为服务器光标,并且是forwardonly(只能向前滚动,并且只读),应该不支持book。楼主写出这么长程序,竟然搞不清这个?
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