请看下面的代码:Dim cnn As New ADODB.Connection
Dim rs As New ADODB.Recordset
Dim sql As StringPrivate Sub Form_Load()
Dim strcnn As String
strconn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & App.Path & "\db.mdb"
cnn.Open strconn
sql = "select * from tb1"
Set rs = cnn.Execute(sql)
Text1.Text = CStr(rs.RecordCount)
Set MSHFlexGrid1.Recordset = rs
rs.Close
cnn.Close
End Sub
tb1表中有三条记录,但是只显示一条记录,而且rs.recordcount的值是-1。
请问为什么会这样呢?
Dim rs As New ADODB.Recordset
Dim sql As StringPrivate Sub Form_Load()
Dim strcnn As String
strconn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & App.Path & "\db.mdb"
cnn.Open strconn
sql = "select * from tb1"
Set rs = cnn.Execute(sql)
Text1.Text = CStr(rs.RecordCount)
Set MSHFlexGrid1.Recordset = rs
rs.Close
cnn.Close
End Sub
tb1表中有三条记录,但是只显示一条记录,而且rs.recordcount的值是-1。
请问为什么会这样呢?
Set rs = cnn.Execute(sql)
//改成这个样子
if rs.state<>adstateclosed then rs.close
rs.open"select * from tb1",conn,1,1
msgbox rs.RecordCount
Dim rs As New ADODB.Recordset
Dim sql As StringPrivate Sub Form_Load()
Dim strcnn As String
strconn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & App.Path & "\db.mdb"
cnn.Open strconn
cnn.CursorLocation =adUseClient'注意要使用客户端游标
sql = "select * from tb1"
Set rs = cnn.Execute(sql)
Text1.Text = CStr(rs.RecordCount)
Set MSHFlexGrid1.Recordset = rs
rs.Close
cnn.Close
End Sub
Dim rs As New ADODB.Recordset
Dim sql As StringPrivate Sub Form_Load()
Dim strcnn As String
strconn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & App.Path & "\db.mdb"
cnn.Open strconn
cnn.CursorLocation =adUseClient
sql = "select * from tb1"
Set rs = cnn.Execute(sql)
Text1= rs.RecordCount
Set MSHFlexGrid1.Recordset = rs
rs.Close
cnn.Close
End Sub
Dim Rs As New ADODB.RecordsetPrivate Sub Form_Load()
cnn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & App.Path & "\db.mdb"
Rs.Open "select * from tb1", Cnn, adOpenKeyset, adLockReadOnly
Set MSHFlexGrid1.DataSource = rs
Rs.Close
Cnn.Close
End Sub
同意chenyu5188(来自东方的狼),设置本地静态游标,才能正确读取recordcount,否则,记录集是服务器端的动态记录集,不会返回此属性的。