Office中国论坛/Access中国论坛

标题: 通用模块:读取图片文件并保存到OLE字段中 [打印本页]

作者: duomu    时间: 2008-2-1 17:53
标题: 通用模块:读取图片文件并保存到OLE字段中
带示例文件,请各位朋友多多指正


Public ImgPath As String
Public Function LoadBImage(ByVal NewForm As Form, _
                           ByVal NewID As String, _
                           ByVal NewIDValue As Variant, _
                           ByVal NewField As String, _
                           ByVal NewImage As Image)
'===============================================================================
'-函数名称:     LoadBImage
'-功能描述:     以二进制数据格式加载图片,并保存于数据库,一般为当前数据库,
'               若窗体引用记录集为外部ACCESS数据库,同样适用,调用函数SaveImage
'-输入参数说明: 参数1: 必选 应用显示图片的窗体,[对象变量]
'               参数2: 必选 窗体记录集的主键名,[文本变量]
'               参数3: 必选 窗体某一记录的主键值,一般为当前记录,[未定义变量]
'               参数4: 必选 图片所在的字段名,[文本变量]
'               参数5: 必选 应用显示的图片控件,[对象变量]
'-返回参数说明: 无
'-使用语法示例: Call LoadBImage(Me, "id", me.id, "图片", me.image1)
'-参考:
'-使用注意:     NewForm, NewImage 为对象,使用时不能加引号
'               因为要使用文本流对象,请使用前引用 Microsoft ActiveX Objects 2.5以上
'-兼容性:       2000,XP,2003 compatible
'-作者:         duomu
'-更新日期:    2007-09-6
'===============================================================================
    Dim result As Integer
    Dim FileName As String
    On Error GoTo HandleErr
    If Len(ImgPath) = 0 Then ImgPath = CurrentProject.Path
    With Application.FileDialog(1)
        .Title = "选择照片"
        .Filters.Clear
        .Filters.Add "所有文件", "*.*"
        .Filters.Add "JPEGs", "*.jpg"
        .Filters.Add "位图文件", "*.bmp"
        .FilterIndex = 2
        .AllowMultiSelect = False
        .InitialFileName = ImgPath
        result = .Show
        If result = -1 Then
            FileName = Trim(.SelectedItems.Item(1))
            Call SaveBImage(FileName, NewForm, NewID, NewIDValue, NewField, NewImage)
        Else
            LoadBImage = 1
            Exit Function
        End If
        ImgPath = FileName
        NewImage.Picture = FileName
    End With
ExitHere:
    Exit Function
HandleErr:
    MsgBox Err.Description
    Resume ExitHere
End Function
Public Function SaveBImage(ByVal FileName As String, _
                           ByVal NewForm As Form, _
                           ByVal NewID As String, _
                           ByVal NewIDValue As Variant, _
                           ByVal NewField As String, _
                           ByVal NewImage As Image)
'===============================================================================
'-函数名称:     SaveBImage
'-功能描述:     以二进制数据格式加载图片,并保存于数据库,一般为当前数据库,
'               若窗体引用记录集为外部ACCESS数据库,同样适用,调用函数SaveImage
'-输入参数说明: 参数1: 必选 图片路径,[文本变量]
'               参数2: 必选 应用显示图片的窗体,[对象变量]
'               参数3: 必选 窗体记录集的主键名,[文本变量]
'               参数4: 必选 窗体某一记录的主键值,一般为当前记录,[未定义变量]
'               参数5: 必选 图片所在的字段名,[文本变量]
'               参数6: 必选 应用显示的图片控件,[对象变量]
'-返回参数说明: 无
'-使用语法示例: 略
'-参考:         LoadBImage()过程
'-使用注意:     NewForm, NewImage 为对象,使用时不能加引号
'               因为要使用文本流对象,请使用前引用 Microsoft ActiveX Objects 2.5以上
'-兼容性:       2000,XP,2003 compatible
'-作者:         duomu
'-更新日期:    2007-09-6
'===============================================================================
    Dim ObjRst As DAO.Recordset
    Dim ObjStream As ADODB.Stream

    On Error GoTo HandleErr
    Set ObjRst = NewForm.Recordset
    Set ObjStream = New ADODB.Stream
    If Not IsNull(FileName) Then
        With ObjStream
            .Type = adTypeBinary
            .Open
            .LoadFromFile FileName
        End With
    End If
    If ObjRst.Fields(NewID).Type = dbText Then
        ObjRst.FindFirst "[" & NewID & "]" & " = '" & NewIDValue & "'"
    Else
        ObjRst.FindFirst "[" & NewID & "]" & " = " & NewIDValue
    End If
    If Not ObjRst.NoMatch Then
        ObjRst.Edit
        ObjRst(NewField) = ObjStream.Read
        ObjRst.Update
    End If
    ObjStream.Close
    Set ObjStream = Nothing
ExitHere:
    Exit Function
HandleErr:
    MsgBox Err.Description
    Resume ExitHere
End Function
Public Function DisplayBImage(ByVal NewForm As Form, _
                              ByVal NewID As String, _
                              ByVal NewIDValue As Variant, _
                              ByVal NewField As String, _
                              ByVal NewImage As Image)
'===============================================================================
'-函数名称:     DisplayBImage
'-功能描述:     显示以二进制数据格式保存在数据库内的图片
'-输入参数说明: 参数1: 必选 应用显示图片的窗体,[对象变量]
'               参数2: 必选 窗体记录集的主键名,[文本变量]
'               参数3: 必选 窗体某一记录的主键值,一般为当前记录,[未定义变量]
'               参数4: 必选 图片所在的字段名,[文本变量]
'               参数5: 必选 应用显示的图片控件,[对象变量]
'-返回参数说明: 无
'-使用语法示例: Call DisplayBImage(Me, "id", me.id, "图片", me.image1)
'-参考:
'-使用注意:     NewForm, NewImage 为对象,使用时不能加引号
'               因为要使用文本流对象,请使用前引用 Microsoft ActiveX Objects 2.5以上
'-兼容性:       2000,XP,2003 compatible
'-作者:         duomu
'-更新日期:    2007-09-6
'===============================================================================
    Dim ObjRst As DAO.Recordset
    Dim ObjStream As ADODB.Stream
    On Error GoTo HandleErr
    Set ObjRst = NewForm.Recordset
    Set ObjStream = New ADODB.Stream
    If IsNull(NewIDValue) Then NewImage.Picture = "": Exit Function
    If ObjRst.Fields(NewID).Type = dbText Then
        ObjRst.FindFirst "[" & NewID & "]" & " = '" & NewIDValue & "'"
    Else
        ObjRst.FindFirst "[" & NewID & "]" & " = " & NewIDValue
    End If
    If Not ObjRst.NoMatch Then
        If Len(ObjRst(NewField)) > 0 Then
            With ObjStream
                .Mode = adModeReadWrite
                .Type = adTypeBinary
                .Open
                .Write ObjRst(NewField)
                .SaveToFile CurrentProject.Path & "\image.jpg", adSaveCreateOverWrite
            End With
        Else
            NewImage.Picture = ""
            Exit Function
        End If
    End If
    NewImage.Picture = CurrentProject.Path & "\image.jpg"
    NewImage.SizeMode = acOLESizeZoom
    ObjStream.Close
    Kill CurrentProject.Path & "\image.jpg"
    Set ObjStream = Nothing
ExitHere:
    Exit Function
HandleErr:
    MsgBox Err.Description
    Resume ExitHere
End Function
Public Function DeleteBImage(ByVal NewForm As Form, _
                             ByVal NewID As String, _
                             ByVal NewIDValue As Variant, _
                             ByVal NewField As String, _
                             ByVal NewImage As Image)
'===============================================================================
'-函数名称:     LoadImage
'-功能描述:     删除以二进制数据格式保存在数据库内的图片
'-输入参数说明: 参数1: 必选 应用显示图片的窗体,[对象变量]
'               参数2: 必选 窗体记录集的主键名,[文本变量]
'               参数3: 必选 窗体某一记录的主键值,一般为当前记录,[未定义变量]
'               参数4: 必选 图片所在的字段名,[文本变量]
'               参数5: 必选 应用显示的图片控件,[对象变量]
'-返回参数说明: 无
'-使用语法示例: Call LoadImage(Me, "id", me.id, "图片", me.image1)
'-参考:
'-使用注意:     NewForm, NewImage 为对象,使用时不能加引号
'               因为要使用文本流对象,请使用前引用 Microsoft ActiveX Objects 2.5以上
'-兼容性:       2000,XP,2003 compatible
'-作者:         duomu
'-更新日期:    2007-09-6
'===============================================================================
    Dim ObjRst As DAO.Recordset
    On Error GoTo HandleErr
    Set ObjRst = NewForm.Recordset
    If ObjRst.Fields(NewID).Type = dbText Then
        ObjRst.FindFirst "[" & NewID & "]" & " = '" & NewIDValue & "'"
    Else
        ObjRst.FindFirst "[" & NewID & "]" & " = " & NewIDValue
    End If
    If Not ObjRst.NoMatch Then
        ObjRst.Edit
        ObjRst(NewField) = ""
        ObjRst.Update
    End If
    NewImage.Picture = ""
ExitHere:
    Exit Function
HandleErr:
    MsgBox Err.Description
    Resume ExitHere
End Function
作者: 真主    时间: 2008-2-1 18:31
谢谢,真的非常感谢!
作者: 5988143    时间: 2008-2-1 18:31
好东东,收藏了!
谢谢分享 !
作者: tmtony    时间: 2008-2-1 19:24
谢谢分享
作者: andymark    时间: 2008-2-1 20:28
谢谢分享!!
作者: sunny-xie    时间: 2008-2-2 14:15
这是不是说,可以把图片保存在库里,而不用单独的把图片保存在一个文件夹和后台放在一起了?
作者: baije    时间: 2008-2-2 14:33
好东西,收了。。。。。
谢谢
作者: aone    时间: 2008-2-3 23:38
好东西赶紧收藏!
作者: hosam    时间: 2008-7-24 10:25
谢谢分享~~~~
作者: zzcjp    时间: 2008-9-27 17:22
好东东,收藏了!
作者: rcylbx    时间: 2008-9-27 20:45
好东东,收藏了
作者: bpchan    时间: 2008-10-28 12:11
标题: hh
hhhhhhhhhh
作者: 7777777    时间: 2008-11-22 17:43
东东,收藏了!
谢谢分享 !
作者: sunwrsun    时间: 2008-11-23 03:45
非常感谢!
作者: liuxinquan    时间: 2009-3-27 16:35
谢谢,真的非常感谢!
作者: wangzi2010    时间: 2009-3-31 12:47
1# duomu
作者: 陈大林    时间: 2009-4-5 15:06
看看
作者: liuxinquan    时间: 2009-4-15 12:08
谢谢,真的非常感谢!
作者: 最怕冷    时间: 2009-4-20 22:15
好东西,受教了
作者: wzh    时间: 2009-4-22 13:09
好东东,收藏了!
谢谢分享
作者: 快乐王    时间: 2009-4-24 14:01
谢谢分享
作者: yinghua05    时间: 2009-5-6 18:43
学习一下
作者: sxb2007    时间: 2009-5-8 22:22
谢谢分享
作者: chaojianan    时间: 2009-5-9 11:05
谢谢,十分感谢.
作者: 宏魔法师    时间: 2009-5-21 12:50
正需要这个,学习下!
作者: zzcjp    时间: 2009-8-9 17:13
谢谢分享
作者: ssangcry    时间: 2009-8-25 11:57
谢谢分享
作者: ilovshevchenko    时间: 2009-8-27 10:27
收藏了
作者: 坡芽歌书    时间: 2009-8-27 10:35
谢谢,真的非常感谢!
作者: 坡芽歌书    时间: 2009-8-27 10:36
谢谢分享~~~~
作者: wangweiyds    时间: 2009-8-28 10:02
谢谢分享~~~~
作者: li08hua    时间: 2009-9-2 04:25
非常感谢!
作者: jamesmarkgg    时间: 2009-9-4 00:30
CESHI
作者: secowu    时间: 2009-9-5 15:18
谢谢..............辛苦了...........
作者: secowu    时间: 2009-9-7 16:57
有没有好的BOM模块呢
作者: ui    时间: 2009-11-13 17:13
看看
作者: 小桥人家    时间: 2009-11-24 09:30
OEL其他文件的行不行
作者: hi-wzj    时间: 2009-12-9 14:35
看下
作者: jellings    时间: 2009-12-11 15:09
学习学习                                .
作者: amocvv    时间: 2009-12-15 18:00
这个不需要什么控件吧~~
作者: lp2lp2    时间: 2009-12-17 09:28
学习学习
作者: tony182838    时间: 2010-1-16 10:10
谢谢分享
作者: 13601812106_01    时间: 2010-1-17 00:21
谢谢分享
作者: 82077802    时间: 2010-1-17 09:11
好东东,收藏了!
谢谢分享 !
作者: li08hua    时间: 2010-1-29 22:52
好东东。分享!
作者: zhao__feng    时间: 2010-2-7 20:05
谢谢
作者: duomu    时间: 2010-3-2 19:48
因工作原因,好久没回家,祝各位坛友新年快乐!
作者: lovelaceliu    时间: 2010-3-4 11:41
楼主很厉害,向楼主学习
作者: BILLFEI    时间: 2010-3-11 15:11
谢谢分享
作者: bochin    时间: 2010-3-14 00:19
學習
作者: dfnt11    时间: 2010-3-14 01:09
好东西赶紧收藏!
作者: liushichao3687    时间: 2010-4-6 14:24
xiexie
作者: liushichao3687    时间: 2010-4-6 14:27
我下载的文件为什么有密码 啊
到底密码是多少啊

作者: yanwei82123300    时间: 2010-4-6 14:51
好东东,收藏了!
谢谢分享 !
作者: BILLFEI    时间: 2010-4-11 00:56
谢谢分享~~~~
作者: sagemeyou    时间: 2010-4-14 12:14
好帖,顶下
作者: shouryu    时间: 2010-4-23 16:54
顶顶了
作者: jsan999    时间: 2010-5-28 11:56
xiexie                    xxx
作者: xlyw    时间: 2010-5-28 15:07
学习学习再学习
作者: utngrihii    时间: 2010-6-5 21:14
谢谢,真的非常感谢!
作者: zww3008    时间: 2010-6-12 18:55
谢谢分享~~~~
作者: 石三少    时间: 2010-7-27 09:33
看看
作者: ZHENGLIAN    时间: 2010-8-18 15:11
谢谢,真的非常感谢!
作者: fcghw    时间: 2010-11-15 17:28
真的非常感谢
作者: lirong    时间: 2010-11-18 21:16
下载一个来看看
作者: LUIDAOHONG    时间: 2010-12-6 00:40
2222222222222
作者: xie62    时间: 2010-12-6 07:49
谢谢分享 !
作者: hnabv    时间: 2010-12-7 21:12
ok!
作者: weny87    时间: 2011-3-31 23:12
很好,最好又实例就更加好了
作者: js7756    时间: 2011-5-2 00:20
谢谢,真的非常感谢!
作者: yy138360    时间: 2011-5-2 21:17
先谢谢了
作者: zhaozhuonayes    时间: 2011-6-4 08:27
学习
作者: 130050007    时间: 2011-6-7 12:20
good
作者: wgh3g    时间: 2011-6-7 17:48
学习
作者: chenyingfengsx    时间: 2011-7-12 10:03
我看看,正在找啊!
作者: licongli    时间: 2011-7-12 10:25
看看。
作者: dolodelqyitm    时间: 2011-7-17 04:51
国奥队、

作者: yhf    时间: 2011-9-20 19:34
学学
作者: jedtang    时间: 2011-11-18 09:28
谢谢分享~~~~
作者: bpchan    时间: 2011-11-26 14:23
X XXXX!
作者: pangzcn    时间: 2011-11-26 21:29
学些学习
作者: 67613188    时间: 2011-11-27 07:50

作者: 67613188    时间: 2011-11-27 07:52
谢谢分享~~~~
作者: hdgf1234    时间: 2011-12-16 17:06
have a look
作者: h150085001    时间: 2011-12-16 17:46
真好
作者: xxiaoxin321    时间: 2012-1-4 10:09
学习!~~~
作者: l_q101    时间: 2012-1-12 17:52
{:soso_e192:}{:soso_e192:}{:soso_e192:}
作者: lazybird    时间: 2012-2-26 21:44
谢谢,真的非常感谢!

作者: xuwenning    时间: 2012-2-27 08:21
收藏了
作者: dsz5142    时间: 2012-4-13 16:28
不错啊,谢谢分享
作者: boyandmerry    时间: 2012-4-24 18:07
终于找到了
作者: xjb_test    时间: 2012-4-24 19:16
谢谢楼主分享...
作者: accesswj    时间: 2012-4-25 21:37
okkookokkoo
作者: jingan    时间: 2012-4-29 11:42
好东东学习
作者: sl-txm    时间: 2012-8-9 21:20
学习
作者: lxj8897    时间: 2012-8-14 10:09
谢谢分享!很有用
作者: lxj8897    时间: 2012-8-14 10:09
谢谢分享!很有用
作者: lxj8897    时间: 2012-8-14 10:09
谢谢分享!很有用
作者: lxj8897    时间: 2012-8-14 10:09
谢谢分享!很有用
作者: lxj8897    时间: 2012-8-14 10:09
谢谢分享!很有用




欢迎光临 Office中国论坛/Access中国论坛 (http://www.office-cn.net/) Powered by Discuz! X3.3