我有vsflex控件显示数据库的内容,当数据很多时,显示就特别慢,有什么好的办法解决没有,请大家帮帮我!
解决方案 »
- VB的同学在哪里~~~
- IC卡程序问题我用vb写的IC卡程序。现在读卡什么都正常。可是写卡也提示成功。就是卡内的余额不变。那位朋友遇到过类似的问题。提示提示???
- 10分,10分。一个很简单的问题,高手务必帮帮。。
- 关于字符转换的问题!在线先进
- 一个关于三维数组的问题
- 水晶报表9.0在VB中的使用方法!求解!
- 问一个很菜的问题
- 不显示删除回复显示所有回复显示星级回复显示得分回复 拿到一套VB程序还有数据库备份。。。运行程序 实时错误 91 就要交作业了!求好心人帮忙!
- ★★★ sndPlaySound 如何播放内存和资源文件里面的声音
- 图片框的问题
- vb+sql 临时表问题
- 向用VC自写DLL中传送结构的问题
好像是visualData吧.
好像是visualData吧.
要用到这个属性,是不是要与数据库绑定才行啊,可是我不想绑定啊,怎么办呢?
设置 Rs 的 Page 属性,如 AbsolutePage
设置 Rs 的 Page 属性,如 AbsolutePage
该范例使用 AbsolutePage、PageCount 和 PageSize 属性,以每次五个记录的方式显示雇员表中的姓名和受雇日期。Public Sub AbsolutePageX()
Dim rstEmployees As ADODB.Recordset
Dim strCnn As String
Dim strMessage As String
Dim intPage As Integer
Dim intPageCount As Integer
Dim intRecord As Integer ' 使用客户端游标为雇员表打开一个记录集。
strCnn = "Provider=sqloledb;" & _
"Data Source=srv;Initial Catalog=pubs;User Id=sa;Password=; "
Set rstEmployees = New ADODB.Recordset
' 使用客户端游标激活 AbsolutePosition 属性。
rstEmployees.CursorLocation = adUseClient
rstEmployees.Open "employee", strCnn, , , adCmdTable
' 显示姓名和受雇日期,每次五个记录。
rstEmployees.PageSize = 5
intPageCount = rstEmployees.PageCount
For intPage = 1 To intPageCount
rstEmployees.AbsolutePage = intPage
strMessage = ""
For intRecord = 1 To rstEmployees.PageSize
strMessage = strMessage & _
rstEmployees!fname & " " & _
rstEmployees!lname & " " & _
rstEmployees!hire_date & vbCr
rstEmployees.MoveNext
If rstEmployees.EOF Then Exit For
Next intRecord
MsgBox strMessage
Next intPage
rstEmployees.CloseEnd Sub
你好
我用的是DAO,好象找不到你说的属性,怎么办啊!
.Redraw = flexRDBuffered
flexRDNone --不刷新数据,要手工刷新数据才会显示
flexRDDirect --立即装入所有的数据,你应该是设置成了这个,所以速度慢
flexRDBuffered --显示部分数据,这种速度最快,调用数据的时候,只显示当前看到的
部分数据,当你拖动滚动条向下的时候,才逐步装入其他部分数据
.redraw 这个属性,是不是也要绑定才行啊
我的程序是这样子的 sSql = "SELECT * FROM B_clmxb INNER JOIN B_clmxh ON B_clmxb.no=B_clmxh.noh "
sSql = sSql & "WHERE B_clmxb.pm='" & Trim(reCl!bh) & "' AND B_clmxh.ck='" & Trim(reCk!bh) & "' "
sSql = sSql & " AND B_clmxh.yf>='" & Trim(lRqone) & "' AND B_clmxh.yf<='" & Trim(lRqtwo) & "' "
sSql = sSql & "ORDER BY B_clmxb.no"
Set reClmx = dbJxc.OpenRecordset(sSql, dbOpenDynaset)
If reClmx.EOF And reClmx.BOF Then
MsgBox "没有可供使用的数据,请确定!", vbInformation, "请确定"
Else
reClmx.MoveLast
lClmx = reClmx.RecordCount
End If
VsClmx.Rows = lClmx + 2
reClmx.MoveFirst
For lMxjs = 2 To lClmx + 1
If Right(Trim(reClmx!no), 5) <> "99998" And Right(Trim(reClmx!no), 5) <> "99999" Then
dJysl = dJysl + reClmx!rksl - reClmx!cksl
dJyje = dJyje + reClmx!rkje - reClmx!ckje
End If
With VsClmx
If IsNull(reClmx!Djbh) Then
.TextMatrix(lMxjs, 1) = ""
Else
.TextMatrix(lMxjs, 1) = IIf(IsNull(reClmx!ldrq), "", Day(reClmx!ldrq))
End If
.TextMatrix(lMxjs, 0) = "" & reClmx!yf
.TextMatrix(lMxjs, 2) = "" & reClmx!Djbh
.TextMatrix(lMxjs, 3) = "" & reClmx!zy
.TextMatrix(lMxjs, 4) = IIf(reClmx!rksl = 0, "", FormatNumber(reClmx!rksl, 2, vbTrue, vbFalse, vbTrue))
.TextMatrix(lMxjs, 5) = IIf(reClmx!rkdj = 0, "", FormatNumber(reClmx!rkdj, 4, vbTrue, vbFalse, vbTrue))
.TextMatrix(lMxjs, 6) = IIf(reClmx!rkje = 0, "", FormatNumber(reClmx!rkje, 2, vbTrue, vbFalse, vbTrue))
.TextMatrix(lMxjs, 7) = IIf(reClmx!cksl = 0, "", FormatNumber(reClmx!cksl, 2, vbTrue, vbFalse, vbTrue))
.TextMatrix(lMxjs, 8) = IIf(reClmx!ckdj = 0, "", FormatNumber(reClmx!ckdj, 4, vbTrue, vbFalse, vbTrue))
.TextMatrix(lMxjs, 9) = IIf(reClmx!ckje = 0, "", FormatNumber(reClmx!ckje, 2, vbTrue, vbFalse, vbTrue))
.TextMatrix(lMxjs, 10) = FormatNumber(dJysl, 2, vbTrue, vbFalse, vbTrue)
If dJysl <> 0 Then
.TextMatrix(lMxjs, 11) = FormatNumber(lRound(dJyje / dJysl, 4), 4, vbTrue, vbFalse, vbTrue)
Else
.TextMatrix(lMxjs, 11) = 0#
End If
.TextMatrix(lMxjs, 12) = FormatNumber(dJyje, 2, vbTrue, vbFalse, vbTrue)
End With
reClmx.MoveNext
Next lMxjs当总记录超过5000条时,就很慢了,请大家帮我看看,怎么办啊
举个简单的例子:
10000记录,假设ID就是1到10000,每页要显示的记录数=20.
那么读第一页的时候,ID>=1 and ID<=20
读第100页的时候呢,ID>=2001 and ID<=2020
分页函数的目的就是给出算法,算出ID的范围。
一般要求ID是数字(整数或数字串)如果ID是整数,还有更简单的方法,可以使用asc desc 和 top 组合,但这样不容易任意页跳转,只能顺序上翻下翻。
我遇到好多问题,所以放弃使用这个控件!
你好
能给个绑定数据源的例子吗,谢谢你,我的email: [email protected]
还不错?我感觉不太好.控制起来我看还不如用mshflexgrid去模拟效果算了.
不过有时也要用到它,呵呵.
邹哥哥,你试试能不能连续输入中文?就是在不同的单元格之间.
With Vsf
'一些显示属性的设置
.Redraw = flexRDNone '先不刷新数据
.AllowUserResizing = flexResizeColumns
.AutoSearch = flexSearchFromCursor
.ExplorerBar = flexExSort
.Rows = 1
.DataMode = flexDMFree
.FixedCols = 0 '绑定要显示的数据
Set .DataSource = Re '自动调整列的宽度(这里你也可以做其他设置,比如列的显示格式等)
.AutoSize 0, .Cols - 1 '显示部分数据
.Redraw = flexRDBuffered
End With
Re.Close
你好
我先试试,如果成功,我会给分的,谢谢你
另外,我还有个问题:
当设置某列 vs.ColComboList(1) = "..." 时,也就是输入的时候是点按钮实现选择方式,但当数据很多时,只能一个个的找,很麻烦,我想就是能在它上面输内容,再单击按钮,然后就查找出我需要显示的相关内容,再选择。
请帮帮我,谢谢你!
你好!
我的显示好象还有只有逐个填了,你看下面的代码
If Right(reClmx!no), 5) <> "99998" And Right(reClmx!no), 5) <> "99999" Then
dJysl = dJysl + reClmx!rksl - reClmx!cksl 这里是计算显示在vs 表格中最后一列的数据,请看上面的例子中。
End If
With VsClmx
If IsNull(reClmx!Djbh) Then
.TextMatrix(lMxjs, 1) = ""
Else
.TextMatrix(lMxjs, 1) = IIf(IsNull(reClmx!ldrq), "", Day(reClmx!ldrq))
End If
.TextMatrix(lMxjs, 0) = "" & reClmx!yf
.TextMatrix(lMxjs, 2) = "" & reClmx!Djbh
.TextMatrix(lMxjs, 3) = "" & reClmx!zy
这是上面的代码,因为我的数据并不都是直接可以显示出来的,有的是要从别的数据表中查询值的,你看看,我该怎么办啊!
你好!
帮我想想办法呀
rs.open "select a,b,case when c=1 or c=2 then a+b else a-b end from table1",cn
你好
就我的程序,使用方法会好些!
Dim iInt As Integer
Dim iPoint As Long
sSql = "SELECT * FROM B_Clzlb ORDER BY B_clzlb.bh"
Set rejxc11 = dbjxc.OpenRecordset(sSql, dbOpenDynaset) With vsFclzl
.Cols = 8
For iPoint = 0 To 7
.FixedAlignment(iPoint) = flexAlignCenterCenter
.ColAlignment(iPoint) = flexAlignRightCenter
Next iPoint
.TextMatrix(0, 0) = "编号"
.TextMatrix(0, 1) = "材 料 名 称"
.TextMatrix(0, 2) = "商品分类"
.TextMatrix(0, 3) = "计量单位"
.TextMatrix(0, 4) = "型号"
.TextMatrix(0, 5) = "规格"
.TextMatrix(0, 6) = "备注"
.TextMatrix(0, 7) = "状态"
End With
With vsFclzl .Redraw = flexRDNone '先不刷新数据
.AllowUserResizing = flexResizeColumns
.AutoSearch = flexSearchFromCursor
.ExplorerBar = flexExSort
.Rows = 1
.DataMode = flexDMFree
.FixedCols = 0 '绑定要显示的数据
Set .DataSource = rejxc11 程序运行到这里,提示出类型错误,是怎么回事啊
'自动调整列的宽度(这里你也可以做其他设置,比如列的显示格式等)
.AutoSize 0, .Cols - 1 '显示部分数据
.Redraw = flexRDBuffered
End WithEnd Sub