初学VB,使用ado访问SQL Server,在将ado.Recordset对象变量中查询结果显示到MSHFlexGrid控件时,VB提示出现错误:
原始代码如下:
Option Explicit
Private Sub Form_Load()
Dim cn As ADODB.Connection
Dim rs As ADODB.Recordset
Dim sql As String
Set cn = New ADODB.Connection
cn.Open "Provider= SQLOLEDB;Driver= {SQL Server};Server=(local);DataBase=学生成绩管理系统;UID=sa;PWD=wzj841996569"
sql = "select * from Student"
Set rs = New ADODB.Recordset
rs.Open sql, cn, adOpenForwardOnly, adLockOptimistic
Do While Not rs.EOF
List1.AddItem rs("sname")
Set MSHFlexGrid1.DataSource = rs
rs.MoveNext
Loop
rs.Close
cn.Close
Set rs = Nothing
Set cn = Nothing
End Sub
问题解决办法:将上述代码中红色部分的OPEN语句中“数据光标类型asOpenForwardOnly”更改成“adOpenKeyset”即可解决问题。
原因:可能是数据光标类型选用错误导致。
PS:数据光标类型及锁类型如下