Office中国论坛/Access中国论坛
标题:
[分享]显示/存储OLE字段存储图片的另类方法
[打印本页]
作者:
zhuyiwen
时间:
2004-2-21 01:42
标题:
[分享]显示/存储OLE字段存储图片的另类方法
适用于: Access 2002 2003
如果改用标准的文件对话, 可适用于其它ACCESS版本
[attach]3573[/attach]
[attach]3574[/attach]
作者:
zhuyiwen
时间:
2004-2-21 01:48
ADO操作是学的郑版主的
见:http://www.office-cn.net/bbs/dispbbs.asp?boardID=5&ID=14978
但图片操作不使用临时文件,采用图像控件显示OLE字段中的图片.
[此贴子已经被作者于2004-2-20 17:50:14编辑过]
作者:
cg1
时间:
2004-2-21 06:38
专题地址:
http://access911.net/index.asp?board=4&recordid=71FAB51E16DC
简述:
数据库与文件之间的关系如何处理,是将文件保存在 OLE字段 中呢?还是存路径呢?存了路径以后该如何显示哪?详细看看本文以及所有的相关文章吧
<<< 隐藏附加信息
数据库与图片的关系如何处理?
作者:cg1 摘自:access911.net 编辑:cg1 更新日期:2002-12-21 浏览人次:660
问题:
数据库与照片/图片的关系如何处理?
也就是,比如有照片若干,怎样能在数据库中存储并显示?
方法一:
把照片放进数据库,照片的格式最好是bmp,这样就可以在窗体上显示出来,不过这样数据库的体积会暴增。
详细的使用方法请参考Access帮助中的 PictureData 属性(本文末尾有相关帮助)。
而且,你可以直接用 commdlg API 函数来给图像框赋值,然后直接读取某个图像框的 PICTUREDATA 并存储到某个 IMAGE 字段中。这样做的优点是显示、读取方便,缺点是如果图片精度高,占用的硬盘空间会爆大。
详细示例请参考:
http://access911.net/down/eg/OLEfieldAndPictureData.rar(46KB)
方法二:
设一个OLE字段,然后插入对象就行了(对着字段单击右键)。但是要注意的是,用上述方法加入数据库的图片只能以手动方式保存,需要用程序读取的时候会碰到存储在ole字段中二进制数据与源文件不符的情况。主要是因为ole引擎在图片的前面加了一段信息给他自己用。
请参考:
http://access911.net/index.asp?board=4&mode=3&recordid=75FAB21E12DC
方法三:
将图片文件以二进制方式存储在数据库中,使用时调用。详细情况请参考:
使用 ADO 的 STREAM 对象的 LoadFromFile 方法以及 SaveToFile 方法实现:
http://access911.net/index.asp?board=4&mode=3&recordid=74FAB51E13DC
使用 ADO 的 RECORDSET.FIELD 对象的 GetChunk 以及 AppendChunk 方法实现:
http://access911.net/index.asp?board=4&mode=3&recordid=75FAB01E
ASP 中使用的方法:
http://access911.net/index.asp?board=4&mode=3&recordid=79FAB31E
下列例程就是采用这种方法,在显示的时候把长二进制数据保存为临时文件用于显示
http://access911.net/down/photo.rar(size=308K)
方法四:
不把照片放入数据库,只把照片的路径保存到数据库中,动态加载,这样可以支持很多种图片格式。作法是在窗体上放一个图像控件,然后根据员工编号或别的有关联的字段去找出路径,用以下语句来加载图像:
图像1.Picture =路径名
路径名必须包括图象文件名。
详细情况你可以参考 access xp 的示例 northwind.mdb 中的雇员窗体
你也可以参考:http://access911.net/down/eg/LinkPicture.rar(61.1KB)
以下是 PictureData 的参考:
PictureData 属性
请参阅 应用于 示例 特性
使用 PictureData 属性可以将窗体、报表或控件中的图片复制到另一个支持 Picture 属性的对象中。Variant 型,可读写。
expression.PictureData
expression 必需。返回“Applies To”列表中的一个对象的表达式。
说明
PictureData 属性设置值可以是其他图像控件、命令按钮、切换按钮、窗体或报表的 PictureData 属性。
使用 Visual Basic 可以对该属性进行设置。
使用该属性可以根据用户所执行的操作的不同,在窗体中显示不同的背景图片。例如,可以根据“客户”窗体打开的目的是输入数据还是浏览数据而在打开窗体时使用不同的背景图片。
另外,将 PictureData 属性、Timer 事件和 TimerInterval 属性一起使用,可以在窗体中产生简单的动态背景效果。
示例
下面的示例使用三个图像控件实现一只蝴蝶从窗体中飞过的动态效果。Hidden1 图像控件包含的图片是一只双翅向上的蝴蝶,Hidden2 图像控件包含的图片也是一只蝴蝶,不过这只蝴蝶的双翅是向下的。这两个控件的 Visible 属性都设为 False。TimerInterval 属性设为 200。每次发生 Timer 事件时,就通过使用隐藏图像控件的 PictureData 属性更改 Visible1 图像控件中的图片,并且可见图像控件向右移动 200 缇。当可见图像控件的 Left 属性值大于公用变量 gfrmWidth 中存储的窗体宽度时,可见图像控件即重新移回窗体的左边。gfrmWidth 变量值在窗体的 Open 事件中设为 Me.Width。
Private Sub Form_Timer()
Static intPic As Integer
Select Case intPic
Case Is = 1
Me!Visible1.PictureData = Me!Hidden1.PictureData
Case Is = 2
Me!Visible1.PictureData = Me!Hidden2.PictureData
Case Else
End Select
If intPic = 2 Then intPic = 0
intPic = intPic + 1
If (Me!Visible1.Left > gfrmWidth) Then Me!Visible1.Left = 0
Me!Visible1.Left = Me!Visible1.Left + 200
End Sub
适用环境:
Access 97
Access 2000
Access XP
Access 2003
关键字:
数据库,图片,路径,字串,OLE字段 文件 >>>
作者:
zhuyiwen
时间:
2004-2-21 07:57
好!比我的想得周到多了!
作者:
paul16
时间:
2004-2-21 08:10
方法满不错的!
作者:
esmile
时间:
2004-2-24 16:56
提示:
作者被禁止或删除 内容自动屏蔽
作者:
cuiwl
时间:
2004-2-24 21:10
到此学习
作者:
mz_xie
时间:
2006-3-14 01:37
有意思....
作者:
Nicole_20051
时间:
2006-3-15 04:32
谢谢分享
作者:
67613188
时间:
2006-3-26 21:15
不能用。
作者:
herroz
时间:
2006-3-29 18:20
太深奥了 看不懂
作者:
lxp100
时间:
2006-4-1 08:40
good
作者:
WTM1
时间:
2006-6-26 18:15
是一个非常不错的方法,其中有很多值得学习的地方。
作者:
naturesap
时间:
2006-7-5 18:26
fine
作者:
msjzlwl
时间:
2006-7-11 07:26
注释也没有,我是新手,看不懂
作者:
tanhong
时间:
2006-11-2 19:15
有出错提示!
作者:
5988143
时间:
2007-6-16 18:55
這個要支持一下哦
作者:
vivek
时间:
2007-6-21 21:47
自己弄个数据库,来学学的
作者:
wsyzftz197369
时间:
2007-6-21 23:44
标题:
顶一下
小顶一下
作者:
freechina
时间:
2007-6-22 06:43
标题:
回复:(zhuyiwen)[分享]显示/存储OLE字段存储图片的...
木看先交钱。。。。。。。。。。。。
作者:
fisher1013
时间:
2007-6-23 22:59
我是菜鸟 不是很懂啊
作者:
peterlau
时间:
2007-6-24 17:50
THX
作者:
阿智
时间:
2007-6-28 18:30
谢谢分亨
作者:
acepro
时间:
2007-6-29 01:19
好东东,看看
作者:
xelloss
时间:
2007-7-6 04:22
kankan...
作者:
lirong
时间:
2007-7-11 07:25
不错,值得学习
作者:
accessidiot
时间:
2007-7-12 04:54
学习中,看看楼主是怎么用的,我尝试了很久都没有成功.不知道是哪里出错了,也看到过一个例子,代码照搬了也不行.
作者:
fisher1013
时间:
2007-7-14 16:50
KAN KA N
作者:
ysshx
时间:
2007-7-15 00:39
看一看.
作者:
老鬼
时间:
2007-7-15 00:51
STUDYING
作者:
whjtw
时间:
2007-7-20 01:03
看一看
作者:
wan6376
时间:
2007-7-25 17:22
学习一下
作者:
allkilled
时间:
2007-7-25 19:27
Thx for share!!
作者:
xylqr
时间:
2007-8-1 21:45
路过,顺便顶下。
作者:
xiaoan614
时间:
2007-8-4 10:33
标题:
斯蒂芬
斯多夫嘎阿瑟多幅所附
作者:
flybutt2
时间:
2007-8-12 19:18
标题:
正在寻找这方面的资料
正在寻找这方面的资料,太好了。
作者:
109091372
时间:
2007-9-8 14:35
2342344234324
作者:
leoyan76
时间:
2007-9-12 11:04
seeeeeeeeeeeeeeeeeeeeeeee
作者:
leoyan76
时间:
2007-9-13 11:31
資料庫會暴增,修改一下保存圖片的代碼如下就會解決問題:
Private Sub cmdSave_Click()
Dim PicData() As Byte
Dim PicSize As Long
PicSize = FileLen(Me.msDlg.fileName)
If PicSize > 0 Then
ReDim PicData(PicSize)
FileNo = FreeFile
Open Me.msDlg.fileName For Binary As #FileNo
Get #FileNo, , PicData()
Close #FileNo
rs("photo").Value = PicData
rs.Update
End If
Erase PicData
End Sub
作者:
lfxwolf
时间:
2007-9-18 13:44
学习学习呀
作者:
sancai
时间:
2007-9-19 10:27
规定发给的非官方的交换机
作者:
tailang56
时间:
2007-9-24 13:30
顶一下,学多点东西
作者:
小何
时间:
2007-9-25 21:54
好,正在用的到在此谢谢楼主了
作者:
loren
时间:
2007-10-10 10:50
到此学习,谢谢楼主分享
作者:
wxf16
时间:
2007-10-16 21:00
学习中。。。。。。。。。
作者:
wzh
时间:
2007-10-26 08:56
谢谢分享 学习学习!
作者:
xmxth002
时间:
2007-10-28 19:50
Xue Xi Zhi.....
作者:
IT人
时间:
2007-11-5 11:54
5hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh
作者:
ICEMAN
时间:
2007-12-5 15:06
:Q
:L
作者:
ICEMAN
时间:
2007-12-5 15:22
不能加载照片,说编码有问题!
作者:
piaoran
时间:
2007-12-6 14:47
看看啊
(*^__^*) 嘻嘻……
作者:
keenfox
时间:
2008-1-7 14:16
不能用。不能用。不能用。
作者:
sxmzq
时间:
2008-1-8 23:26
方法满不错的!方法满不错的!
作者:
64382575
时间:
2008-1-11 22:24
顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶
作者:
guoanxiang
时间:
2008-1-16 12:56
看看呀!
:lol :lol :lol :lol
作者:
hunrybecky
时间:
2008-1-30 17:25
显示/存储OLE字段存储图片的另类方法,好东西。
作者:
billyfine
时间:
2008-6-28 21:43
学习
作者:
dingxinli
时间:
2008-7-2 16:42
看看看那
作者:
jsan999
时间:
2008-7-8 19:23
okok
作者:
13555609005
时间:
2008-7-26 17:05
学习吓
作者:
右手
时间:
2008-7-31 08:40
看看
作者:
kappalee163
时间:
2008-9-3 20:53
kankan [:34] [:34] [:34] [:34]
作者:
leestrong
时间:
2008-9-4 19:44
[:44] 真的么
作者:
12346qwe
时间:
2008-9-25 16:03
谢谢分享
作者:
xuwenning
时间:
2008-9-25 16:29
收藏
学学
[:50]
作者:
tanhong
时间:
2008-9-25 16:34
不错的帖子,谢谢楼主分享.
作者:
zzcjp
时间:
2008-9-27 15:50
好好学习,天天向上!
作者:
wdmx
时间:
2008-10-5 00:48
试试看
作者:
stonewood
时间:
2008-10-5 12:30
[:50] [:50] [:50]
作者:
kappalee163
时间:
2008-10-22 14:45
see一see
作者:
yhf
时间:
2008-11-9 17:10
好东西,看看
作者:
fxtest
时间:
2008-12-1 19:29
学习学习!!
作者:
13555609005
时间:
2008-12-26 17:08
学习吓
作者:
XWQ2000
时间:
2008-12-27 23:38
[:50]
作者:
7777777
时间:
2009-1-6 11:25
ddddddddddddddddd
作者:
xingzhihao
时间:
2009-2-9 10:52
我喜欢!
作者:
js7756
时间:
2009-2-11 00:29
看一下
作者:
liuxinquan
时间:
2009-3-26 23:13
Access VBA教材!!精!!(
作者:
打字比你快
时间:
2009-4-8 16:25
看看谢谢
作者:
william_yao
时间:
2009-4-20 15:44
进来学习一下
作者:
最怕冷
时间:
2009-4-20 22:00
正需要这个,学习
作者:
最怕冷
时间:
2009-4-20 22:09
程序在access2003下运行似乎有问题,不过基本程序还是看懂了
作者:
chaojianan
时间:
2009-11-1 15:20
谢谢分享。
作者:
wansong2008
时间:
2009-11-1 23:13
xiexie fenxiang
作者:
goto2008
时间:
2009-11-12 22:11
作者:
xbtk
时间:
2009-11-20 13:43
[img]
[/img]
作者:
66364936
时间:
2010-1-10 21:58
进来学习
作者:
airchinazj
时间:
2010-1-18 13:19
谢谢分享
作者:
yzt2005
时间:
2010-3-23 15:49
谢谢分享
作者:
sagemeyou
时间:
2010-4-14 12:20
kankank
作者:
leijiqiang
时间:
2010-9-7 10:19
顶顶
作者:
fcghw
时间:
2010-11-15 17:21
谢谢分享
作者:
ZHENGLIAN
时间:
2010-11-15 17:24
但图片操作不使用临时文件,采用图像控件显示OLE字段中的图
作者:
li08hua
时间:
2010-11-17 12:27
作者:
t小宝
时间:
2012-1-1 00:55
原来老总早就有此帖了
作者:
xie62
时间:
2012-1-1 08:52
谢谢分享
作者:
鱼儿游游
时间:
2012-1-4 13:37
看看
作者:
love10
时间:
2012-2-18 23:27
谢谢
作者:
yanghua1900363
时间:
2012-2-19 09:15
向版主学习!
作者:
阳城
时间:
2012-2-19 09:20
过来学习!!!
欢迎光临 Office中国论坛/Access中国论坛 (http://www.office-cn.net/)
Powered by Discuz! X3.3