《VBA数据库办理方案》教程是我推出的第二套教程,目前已经是初版修订了。这套教程定位于中级,是学完字典后的另一个专题讲解。数据库是数据处理的利器,教程中详细先容了利用ADO连接ACCDB和EXCEL的方法和实例操作,教程初版的修订内容紧张是完成所有程序文件的32位和64位OFFICE系统测试。
这套教程共两册,八十四讲,今后一段韶光会给大家陆续推出修订后的教程内容。今日的内容是:向数据库中添加图片
第四十三讲 如何向数据库中增加图片数据
大家好,我们连续讲解VBA数据库办理方案,今日讲解第43讲内容:如何向数据库中增加图片。这讲的内容我们要把图片存储入数据库中,把图片作为数据来处理。这讲的内容非常适宜人事管理及一些图片必要管理的场合。

我们看下面的数据库:
现在我们要把备注单元格中作为图片管理,也便是说要把和对应员工编号的必要的图片放在F列的“备注”字段中,这个时候该如何处理呢?
在原版本的这套教程中我们是通过OLE工具装载图片,这种方案的缺陷是数据库文件巨大,不利于操作,这套修订的版本中,我给出了其余的思路:便是在数据库中保存图片的地址。这样可以大大的压缩数据库的大小。
2 将图片添加到数据库中的方案看下面我给出的代码:
Sub mynzRecords_43() '第43讲 将图片添加到数据库中的方案
Dim strPicPath, strPicName, strFldPath As String
Dim strPath, strTable, strSQL, strMsg As String
Dim cnADO, rsADO As Object
Set cnADO = CreateObject("ADODB.Connection")
Set rsADO = CreateObject("ADODB.Recordset")
strPath = ThisWorkbook.Path & "\mydata2.accdb"
strTable = "员工记录"
With Application.FileDialog(msoFileDialogFolderPicker)
.AllowMultiSelect = False
.Title = "选择图片文件夹位置"
.InitialFileName = ThisWorkbook.Path & "\"
.AllowMultiSelect = False
.Show
If .SelectedItems.Count = 0 Then Exit Sub
strFldPath = .SelectedItems(1) & "\"
End With
cnADO.Open "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & strPath
strSQL = "SELECT FROM " & strTable
rsADO.Open strSQL, cnADO, 1, 3
Do Until rsADO.EOF
strPicName = rsADO(0)
strPicPath = Dir(strFldPath & strPicName & ".")
If Len(strPicPath) <> 0 Then
strPicPath = strFldPath & strPicPath
rsADO("备注") = Trim(strPicPath)
rsADO.Update
PicSum = PicSum + 1
End If
rsADO.MoveNext
Loop
MsgBox "共有 " & PicSum & " 张照片存入数据库"
rsADO.Close
cnADO.Close
Set rsADO = Nothing
Set cnADO = Nothing
End Sub
部分代码截图:
代码讲解:
1) With Application.FileDialog(msoFileDialogFolderPicker)
.AllowMultiSelect = False
.Title = "选择图片文件夹位置"
.InitialFileName = ThisWorkbook.Path & "\"
.AllowMultiSelect = False
.Show
If .SelectedItems.Count = 0 Then Exit Sub
strFldPath = .SelectedItems(1) & "\"
End With
上述代码得到要加入数据库的图片的路径。
2) Do Until rsADO.EOF
strPicName = rsADO(0)
strPicPath = Dir(strFldPath & strPicName & ".")
If Len(strPicPath) <> 0 Then
strPicPath = strFldPath & strPicPath
rsADO("备注") = Trim(strPicPath)
rsADO.Update
PicSum = PicSum + 1
End If
rsADO.MoveNext
Loop
打开数据库后,我们要往里面加入图片内容,用的仍是rsADO.Update方法,将图片的地址:strPicPath = strFldPath & strPicPath添加到了数据库中。这些代码不是很困难了.
下面我们见地式的运行:
会首先提示你选择图片所在的位置:
末了提示我们图片已经放到数据库中了。
今日内容回向:
1 图片是如何放到数据库中的?
2 是否理解动态数组呢?
本讲内容参考程序文件:VBA与数据库操作(第二册).xlsm
我20多年的VBA实践履历,全部浓缩不才面的各个教程中:
【分享成果,随喜正能量】 计较和怨恨是一座牢,宽容是唯一的钥匙。你计较什么,就被什么困扰;怨恨什么,就被什么禁锢。。