如何解决用DataGrid控件来显示过多记录太慢连接到一有一百万条记录的ORA数据库,用DataGrid控件来显示数据,每一次打开数据库时都要好长一段时间装入全部数据,应如何调整显示数据方式,能否说一打开时只显示一百条,一直浏览,到浏览完这一百条,自动再装入接下来的一百条数据,具体有那几个方面要设置的.我是用VB自带的[窗体生成功能生成的基本语句,请大家看看要达到上面那种方式要如何改才行的.
'==============================================================
Dim WithEvents adoPrimaryRS As Recordset
Dim mbChangedByCode As Boolean
Dim mvBookMark As Variant
Dim mbEditFlag As Boolean
Dim mbAddNewFlag As Boolean
Dim mbDataChanged As BooleanPrivate Sub CMDCONN_Click()'-------------------
Dim db As Connection
Set db = New Connection
db.CursorLocation = adUseClient
db.Open "Provider=MSDAORA.1;Password=" & Text(1).Text & ";User ID= " & Text(0).Text & ";Data Source=" & Text(2).Text & ";Persist Security Info=True;"'db.Open "Provider=MSDAORA.1;Password=pass;User ID=admin;Data Source=orcl;Persist Security Info=True;"
Set adoPrimaryRS = New Recordset
adoPrimaryRS.Open "select * from SJ", db, adOpenStatic, adLockOptimistic Set grdDataGrid.DataSource = adoPrimaryRS
mbDataChanged = False
'=================================End SubPrivate Sub cmdFirst_Click()
On Error GoTo GoFirstError adoPrimaryRS.MoveFirst
mbDataChanged = False Exit SubGoFirstError:
MsgBox Err.Description
End SubPrivate Sub cmdLast_Click()
On Error GoTo GoLastError adoPrimaryRS.MoveLast
mbDataChanged = False Exit SubGoLastError:
MsgBox Err.Description
End SubPrivate Sub cmdNext_Click()
On Error GoTo GoNextError If Not adoPrimaryRS.EOF Then adoPrimaryRS.MoveNext
If adoPrimaryRS.EOF And adoPrimaryRS.RecordCount > 0 Then
Beep
'已到最后返回
adoPrimaryRS.MoveLast
End If
'显示当前记录
mbDataChanged = False Exit Sub
GoNextError:
MsgBox Err.Description
End SubPrivate Sub cmdPrevious_Click()
On Error GoTo GoPrevError If Not adoPrimaryRS.BOF Then adoPrimaryRS.MovePrevious
If adoPrimaryRS.BOF And adoPrimaryRS.RecordCount > 0 Then
Beep
'已到最后返回
adoPrimaryRS.MoveFirst
End If
'显示当前记录
mbDataChanged = False Exit SubGoPrevError:
MsgBox Err.Description
End Sub
'==============================================================
Dim WithEvents adoPrimaryRS As Recordset
Dim mbChangedByCode As Boolean
Dim mvBookMark As Variant
Dim mbEditFlag As Boolean
Dim mbAddNewFlag As Boolean
Dim mbDataChanged As BooleanPrivate Sub CMDCONN_Click()'-------------------
Dim db As Connection
Set db = New Connection
db.CursorLocation = adUseClient
db.Open "Provider=MSDAORA.1;Password=" & Text(1).Text & ";User ID= " & Text(0).Text & ";Data Source=" & Text(2).Text & ";Persist Security Info=True;"'db.Open "Provider=MSDAORA.1;Password=pass;User ID=admin;Data Source=orcl;Persist Security Info=True;"
Set adoPrimaryRS = New Recordset
adoPrimaryRS.Open "select * from SJ", db, adOpenStatic, adLockOptimistic Set grdDataGrid.DataSource = adoPrimaryRS
mbDataChanged = False
'=================================End SubPrivate Sub cmdFirst_Click()
On Error GoTo GoFirstError adoPrimaryRS.MoveFirst
mbDataChanged = False Exit SubGoFirstError:
MsgBox Err.Description
End SubPrivate Sub cmdLast_Click()
On Error GoTo GoLastError adoPrimaryRS.MoveLast
mbDataChanged = False Exit SubGoLastError:
MsgBox Err.Description
End SubPrivate Sub cmdNext_Click()
On Error GoTo GoNextError If Not adoPrimaryRS.EOF Then adoPrimaryRS.MoveNext
If adoPrimaryRS.EOF And adoPrimaryRS.RecordCount > 0 Then
Beep
'已到最后返回
adoPrimaryRS.MoveLast
End If
'显示当前记录
mbDataChanged = False Exit Sub
GoNextError:
MsgBox Err.Description
End SubPrivate Sub cmdPrevious_Click()
On Error GoTo GoPrevError If Not adoPrimaryRS.BOF Then adoPrimaryRS.MovePrevious
If adoPrimaryRS.BOF And adoPrimaryRS.RecordCount > 0 Then
Beep
'已到最后返回
adoPrimaryRS.MoveFirst
End If
'显示当前记录
mbDataChanged = False Exit SubGoPrevError:
MsgBox Err.Description
End Sub
解决方案 »
- 请问怎么用VBA判断EXCEL某一列是否已排序?
- 问个问题啊~~
- 终于把我收集的经典文章共享了。算是为it做点贡献吧。
- QQ群:4281029,VB、DELPHI学习群,欢迎加入!!
- 请教:使用VB如何调用一个SQL的作业!!!
- 怎么回事
- 错误提示:因为数据库正在使用,所以未能获得对数据库的排他访问权
- 急,急,急!!!怎样在点击按扭的时候调用midi或者wave声音文件发声?
- 在VB里用showcursor这个API用得很好,可是在生成的应用程序里就是隐藏不了,吐血!!请高手指教!
- 如何用VB解方程,求大神帮忙,谢谢谢谢谢谢谢谢!!!
- 高手幫忙看看下面程序是否有問題?
- Inet控件中上载的路径、文件名中出现空格的问题
结合使用recordset的pagesize、pagecount、absolutepage属性。 具体用法可查联机帮助。
自己控制查询, 自己装入数据,
listview可以,但视觉效果不好,不建议使用!
mshflexgrid最佳,这是我的选择,因为我都试过了,呵呵.
结合一楼中回复的,把记录一条条的显示在该控件上,不要用datasource属性.给分?
////////////////
datagrid可以分,這裡面說的分和你的理解不同listview速度可以,mshflexgrid和msflexgrid閃動會殺死人的spread速度很好,又強如果一定用datagrid可以分葉顯示或者分解查詢