我写的程序需要在Oracle上存取图片,但如何网速慢的话程序在从数据库上获取图片的过程中程序会出现假死的状态,于是我用一个进度条来显示图片数据的获取进度,可由于程序获取图片时已经处于假死状态,进度条也不会跟进,怎么办呢?
我试着把 DoEvents 放在循环中
可为什么还不行呢?
非常感谢,下面是程序代码
==========================================
'从数据库获取图片
Private Sub GetPicture()
Dim DataFile As Integer
Dim Fl As Long
Dim Chunks As Integer
Dim Fragment As Integer
Dim Chunk() As Byte
Dim i As Integer
Const ChunkSize As Integer = 16384 '块缓存大小
Dim rs As Recordset
On Error GoTo What2Do
Set rs = New ADODB.Recordset
rs.Open "select Picture from YC_PIM_HYD_PROTECTION where Code = " & CurrentCode, cnnDB, adOpenDynamic, adLockOptimistic
DataFile = 1
Open App.path & "\pictemp." & CurrentFileExtension For Binary Access Write As DataFile
Fl = rs!Picture.ActualSize
Chunks = Fl \ ChunkSize
Fragment = Fl Mod ChunkSize
ReDim Chunk(Fragment)
Chunk() = rs!Picture.GetChunk(Fragment)
Put DataFile, , Chunk() For i = 1 To Chunks
ProgressBar1.Value = i / Chunks * ProgressBar1.Max
ReDim Buffer(ChunkSize)
Chunk() = rs!Picture.GetChunk(ChunkSize)
Put DataFile, , Chunk()
Next i ProgressBar1.Value = ProgressBar1.Max
Close DataFile
CurrentPicturePath = App.path & "\pictemp." & CurrentFileExtension
ShowPicture
Exit Sub
What2Do:
MsgBox ("从服务器下载图片错误!")
Exit Sub
End Sub
我试着把 DoEvents 放在循环中
可为什么还不行呢?
非常感谢,下面是程序代码
==========================================
'从数据库获取图片
Private Sub GetPicture()
Dim DataFile As Integer
Dim Fl As Long
Dim Chunks As Integer
Dim Fragment As Integer
Dim Chunk() As Byte
Dim i As Integer
Const ChunkSize As Integer = 16384 '块缓存大小
Dim rs As Recordset
On Error GoTo What2Do
Set rs = New ADODB.Recordset
rs.Open "select Picture from YC_PIM_HYD_PROTECTION where Code = " & CurrentCode, cnnDB, adOpenDynamic, adLockOptimistic
DataFile = 1
Open App.path & "\pictemp." & CurrentFileExtension For Binary Access Write As DataFile
Fl = rs!Picture.ActualSize
Chunks = Fl \ ChunkSize
Fragment = Fl Mod ChunkSize
ReDim Chunk(Fragment)
Chunk() = rs!Picture.GetChunk(Fragment)
Put DataFile, , Chunk() For i = 1 To Chunks
ProgressBar1.Value = i / Chunks * ProgressBar1.Max
ReDim Buffer(ChunkSize)
Chunk() = rs!Picture.GetChunk(ChunkSize)
Put DataFile, , Chunk()
Next i ProgressBar1.Value = ProgressBar1.Max
Close DataFile
CurrentPicturePath = App.path & "\pictemp." & CurrentFileExtension
ShowPicture
Exit Sub
What2Do:
MsgBox ("从服务器下载图片错误!")
Exit Sub
End Sub
解决方案 »
- 不能与SQL server数据库正常连接
- 在企业和公司都做过,有很多的开发经验,也自己营销过软件和自己开发过,想出来干,怎么样?大家给一个建议,是做什么比较赚钱呢,合适呢?网站开发?软件开发?自己做传媒公司?广告开发?还是别的?大家,大侠们给个提议!谢谢
- 哪位高手可否介绍一下远程控制中"当我进行键盘、鼠标操作时,远程电脑也跟我做同样的操作"的原理?
- 热心的哥们姐们们,帮帮我吧,晚上还得加班呢。
- VB数据库打印
- 【高分请高手!】我遇到问题了,时间很紧,请高手帮忙!!!!
- 关于ADO的Recordset的Open方法的参数问题(我这里没有MSDN,请各位帮我看看)
- 为何无法修改ADO.recordset中的值?
- 谁有收发手机短信的VB程序代码,请email给我一份,谢(给分!给分!)[email protected]
- 免费午餐谁想要,想的留下E-mail。
- mshflexgrid绑定到adodc,为何显示的两列顺序是相反的?
- VB引用中 类型库丢失问题!(急)
如果你还嫌CPU占用高的话,再加一句:Sleep(1)Sleep 是 API 函数,声明如下:
Private Declare Sub Sleep Lib "kernel32" Alias "Sleep" (ByVal dwMilliseconds As Long)
同意: For i = 1 To Chunks
ProgressBar1.Value = i / Chunks * ProgressBar1.Max
ReDim Buffer(ChunkSize)
Chunk() = rs!Picture.GetChunk(ChunkSize)
Put DataFile, , Chunk()
doevents '加这句
Next i