我在VB6.0 中,使用ADO访问SQL Server 2000,数据控件使用MSHFlexGrid,但在应用过程中发现MSHFlexGrid控件存在缺陷。具体表现为当数据集的记录数太多时,比如10000条记录,MSHFlexGrid无法完全显示出来,只能显示500多条,我不知道是ADO的问题还是MSHFlexGrid控件的问题,总之在我的程序中会出现这种情况。下面我将我的代码拿出来,给大家看看是哪里出了毛病: Private Sub Command1_Click()
On Error GoTo errhap
Dim Conn As New ADODB.Connection
Dim RS As New ADODB.Recordset
Dim ConnStr As String
ConnStr = "Driver={sql server};server=MyServer;uid=sa;pwd=123456;database=MyDataBase" conn.Open ConnStr RS.Open "Select * from T1 order by in_id", Conn
Set MSHFlexGrid1.DataSource = rs
rs.Close
conn.Close
Exit Sub
errhap:
MsgBox Err.Description
Exit Sub
End Sub 在以上的代码中,T1是SQL Server中的一个表,其记录数超过10000条。
当程序运行的时候,没有错误,但是MSHFlexGrid1这个控件显示出来的记录就只得500多条,访问T1的时候,我也没有使用Where 语句过滤记录,理论上说,应该可以显示出来10000条记录的,但就是不行,不知是什么原因?
ADO 我引用的是 2.8版本的Library,这么新的版本,应该不会有毛病。 我怎么弄都弄不出原因。为此,我不使用ADO.Recordset,改用控件ADODC作为记录集,重新试了一遍,代码如下:
Adodc1.ConnectionString = connstr
Adodc1.RecordSource = "Select * from t1 order by in_id"
Set MSHFlexGrid1.DataSource = Adodc1
Adodc1.Refresh
但出来的结果也是只有2000多条,MSHFlexGrid1 没有显示出来预计的1万条记录。我更加感到奇怪了!!!!!!! 最后我没有办法了,将MSHFlexGrid1控件改成 DataGrid控件,使用ADODC控件作为数据集,奇迹出现了!!可以显示10000条记录了!!!!!!! 但这不是我要的结果,因为DataGrid这个控件太单调了,不好看,而且功能少,不能达到程序的要求。我要的是用MSHFlexGrid1控件来做程序,
以上的都是真实的,请大家找找MSHFlexGrid1控件不能显示所有查询记录的原因是什么?????感激涕零!!!!!
On Error GoTo errhap
Dim Conn As New ADODB.Connection
Dim RS As New ADODB.Recordset
Dim ConnStr As String
ConnStr = "Driver={sql server};server=MyServer;uid=sa;pwd=123456;database=MyDataBase" conn.Open ConnStr RS.Open "Select * from T1 order by in_id", Conn
Set MSHFlexGrid1.DataSource = rs
rs.Close
conn.Close
Exit Sub
errhap:
MsgBox Err.Description
Exit Sub
End Sub 在以上的代码中,T1是SQL Server中的一个表,其记录数超过10000条。
当程序运行的时候,没有错误,但是MSHFlexGrid1这个控件显示出来的记录就只得500多条,访问T1的时候,我也没有使用Where 语句过滤记录,理论上说,应该可以显示出来10000条记录的,但就是不行,不知是什么原因?
ADO 我引用的是 2.8版本的Library,这么新的版本,应该不会有毛病。 我怎么弄都弄不出原因。为此,我不使用ADO.Recordset,改用控件ADODC作为记录集,重新试了一遍,代码如下:
Adodc1.ConnectionString = connstr
Adodc1.RecordSource = "Select * from t1 order by in_id"
Set MSHFlexGrid1.DataSource = Adodc1
Adodc1.Refresh
但出来的结果也是只有2000多条,MSHFlexGrid1 没有显示出来预计的1万条记录。我更加感到奇怪了!!!!!!! 最后我没有办法了,将MSHFlexGrid1控件改成 DataGrid控件,使用ADODC控件作为数据集,奇迹出现了!!可以显示10000条记录了!!!!!!! 但这不是我要的结果,因为DataGrid这个控件太单调了,不好看,而且功能少,不能达到程序的要求。我要的是用MSHFlexGrid1控件来做程序,
以上的都是真实的,请大家找找MSHFlexGrid1控件不能显示所有查询记录的原因是什么?????感激涕零!!!!!
Dim rs As New ADODB.Recordset
Dim rsVar As Variant
Dim i As Integer
cn.Open "Testing" '<-- Your DSN rs.Open "select * from Cies", cn, adOpenStatic, adLockOptimistic
rs.MoveLast rs.MoveFirst
' Assuming that rs is your ADO recordset
MSHFlexGrid1.Rows = rs.RecordCount + 1 rsVar = rs.GetString(adClipString, rs.RecordCount) MSHFlexGrid1.Cols = rs.Fields.Count ' Set column names in the grid
For i = 0 To rs.Fields.Count - 1 MSHFlexGrid1.TextMatrix(0, i) = rs.Fields(i).Name Next MSHFlexGrid1.Row = 1
MSHFlexGrid1.Col = 0 ' Set range of cells in the grid
MSHFlexGrid1.RowSel = MSHFlexGrid1.Rows - 1
MSHFlexGrid1.ColSel = MSHFlexGrid1.Cols - 1
MSHFlexGrid1.Clip = rsVar ' Reset the grid's selected range of cells
MSHFlexGrid1.RowSel = MSHFlexGrid1.Row
MSHFlexGrid1.ColSel = MSHFlexGrid1.Col rs.Close
Set rs = Nothing
cn.Close
Set cn = Nothing