📄 ado绑定image控件内的图片未更新.txt
字号:
具 体 的 原 因 我 也 不 太 清 楚 , 不 过 有 一 个 办 法 可 以 解 决 这 个 问 题 , 就 是 将 图 片 文 件 按 二 进 制 方 式 打 开 后 原 封 不 动 地 写 进 数 据 库 ( 使 用 SetChunk方 法 ,请 注 意 , 建 议 使 用 动 态 Byte数 组 , 不 要 使 用 字 符 串 或 变 体 , 可 能 的 话 , 一 次 性 读 文 件 到 一 个 数 组 , 在 64M机 器 上 打 开 4M以 下 的 图 片 文 件 没 有 问 题 ) , 同 时 存 储 该 图 片 文 件 的 扩 展 名 和 文 件 大 小 , 要 查 看 图 片 时 , 再 使 用 GetChunk方 法 读 出 原 先 记 下 的 文 件 长 度 到 一 二 进 制 数 组 , 找 到 Windows Temp目 录 后 存 为 一 个 文 件 再 打 开 。 附 简 单 程 序 如 下 ( 程 序 中 如 有 错 误 , 请 自 行 调 试 ) :
数 据 库 表 为
0 编 号 (字 符 型 )
1 图 片 (ole类 型 )
2 图 片 文 件 扩 展 名 (字 符 型 )
3 图 片 文 件 长 度 (长 整 型 )
Function SavePicture(rstMain as adodb.recordset,strFileName as string)
dim FileHandle as string
dim lngLogoSize as long
dim varLogo() as byte
rstMain.Addnew
rstMain(0).value = txtBH.Text
FileHandle = FreeFile
Open strFileName For Binary As #FileHandle
lngLogoSize = FileLen(strFileName)
ReDim varLogo(lngLogoSize - 1)
Get #FileHandle, , varLogo() '数 组 名 加 ()可 以 代 表 数 组
rstMain(1).AppendChunk varLogo()
Close #FileHandle
rstMain(2) = Right(strFileName, 4)
rstMain(3) = lngLogoSize
rstMain.Update
end Function
function ShowPicture(rstMain as adodb.recordset,gTempPath as string)
'显 示 图 片
Dim lngLogoSize As Long
Dim varLogo() As Byte
Dim strTempPath As String
Dim lResult As Long
Dim FileHandle As Long
strTempPath = gTempPath '请 自 行 得 到 Temp路 径
strTempFileName = strTempPath & "PctTemp" & rstMain(2) '存 为 一 临 时 文 件
FileHandle = FreeFile
Open strTempFileName For Output As #FileHandle
Close #FileHandle
Open strTempFileName For Binary As #FileHandle
lngLogoSize = rstMain(3)
ReDim varLogo(lngLogoSize - 1)
varLogo() = rstMain(1).GetChunk(lngLogoSize)
Put #1, , varLogo
Close #1
Set imgPreview.Picture = LoadPicture(strTempFileName)
end function
<END>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -