设为首页收藏本站Access中国

Office中国论坛/Access中国论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

12下一页
返回列表 发新帖
查看: 4792|回复: 13
打印 上一主题 下一主题

[窗体] 请教:在窗体中,如何将图片文件直接存入与表中OLE字段对应绑定的对象框中?

[复制链接]

点击这里给我发消息

跳转到指定楼层
1#
发表于 2002-5-7 18:41:00 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

      请教:在窗体中,如何将图片文件直接存入与表中OLE字段对应绑定的对象框中?

      要求:用一段代码实现,不能有手工操作。

      [em04][em06][em04]

本帖被以下淘专辑推荐:

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 分享淘帖2 订阅订阅

点击这里给我发消息

2#
发表于 2002-5-7 19:39:00 | 只看该作者
我现在的程序都用这个函数(忘了从哪里弄过来了),挺好,应该还有其它办法,我记得ASP中存图片的方法有些不同。
Private Function AppendBlobFromFile(blobColumn As ADODB.Field, ByVal FILENAME) As Boolean
Dim FileNumber      As Integer      '文件号
        Dim DataLen             As Long         '文件长度
Dim Chunks              As Long         '数据块数
Dim ChunkAry()      As Byte         '数据块数组
Dim ChunkSize       As Long         '数据块大小
Dim Fragment        As Long         '零碎数据大小
Dim lngI                As Long '计数器

On Error GoTo ErrorHandle
AppendBlobFromFile = False
ChunkSize = 2048                    '限制每次读取的块大小为 2K

FileNumber = FreeFile               '产生随机的文件号
Open FILENAME For Binary Access Read As FileNumber      '打开图像文件
DataLen = LOF(FileNumber)           '获得文件长度
    If IsNull(blobColumn) Then Exit Function

If DataLen = 0 Then                 '文件长度为0
Close FileNumber
    AppendBlobFromFile = True
    Exit Function
End If
   
Chunks = DataLen \ ChunkSize        '数据块的个数
Fragment = DataLen Mod ChunkSize
If Fragment > 0 Then            '先写零碎数据
ReDim ChunkAry(Fragment - 1)
    Get FileNumber, , ChunkAry()        '读出文件
    blobColumn.AppendChunk ChunkAry '调用AppendChunk函数写数据
End If
   
ReDim ChunkAry(ChunkSize - 1)       '为数据块开辟空间
For lngI = 1 To Chunks                  '循环读出所有数据块
    Get FileNumber, , ChunkAry()        '读出一块数据
    blobColumn.AppendChunk ChunkAry     '在数据库中增加数据块
Next lngI
   
Close FileNumber            '关闭文件
AppendBlobFromFile = True
Exit Function
ErrorHandle:
AppendBlobFromFile = False
MsgBox Err.Description, vbCritical, "写图像数据出错!"
End Function

点击这里给我发消息

3#
 楼主| 发表于 2002-5-7 23:02:00 | 只看该作者
有没有使用 DAO 的方法?

点击这里给我发消息

4#
 楼主| 发表于 2002-5-7 23:38:00 | 只看该作者

    tony, 还有一个更简单的方法,就是模拟手工过程,先将图片文件复制到剪贴板上,然后,将焦点移到 OLE 字段上,进行粘贴。

但是,我不知道怎么写代码,你能帮帮我吗?[em05]

点击这里给我发消息

5#
 楼主| 发表于 2002-5-8 00:11:00 | 只看该作者

经 binbow_z 版主的提示,问题解决。

Private Sub cmdChange_Click()
    照片.Class = "aint.Picture"    ' 设置类名.
    照片.OLETypeAllowed = acOLEEmbedded
    照片.SourceDoc = CurrentProject.Path & "\bmp\logo.bmp"
    照片.Action = acOLECreateEmbed
End Sub

' 照片 为绑定OLE控件.

[em26][em26][em26]

点击这里给我发消息

6#
发表于 2002-5-8 00:45:00 | 只看该作者
不错!
7#
发表于 2002-5-8 04:26:00 | 只看该作者
好极了!不过不会用,我弄出来的图片,看不见图啊!
必须双击图片才能出来图片!怎么可看见图啊,我没用过。请教!

点击这里给我发消息

8#
 楼主| 发表于 2002-5-8 04:49:00 | 只看该作者
9#
发表于 2002-5-8 05:09:00 | 只看该作者

试试我这个例子,如何解决?

希望的效果:单击按钮后显示图片。

文件下载

10#
发表于 2002-5-8 16:57:00 | 只看该作者

请教:在窗体中,如何将图片文件直接存入与表中OLE字段对应绑定的对象框中?

以下是引用竹笛在2002-5-7 20:25:43的发言:
好极了!不过不会用,我弄出来的图片,看不见图啊!
必须双击图片才能出来图片!怎么可看见图啊,我没用过。请教!


OLE服务器的问题:
  你必须在你的电脑中装上能编辑该图片的软件,并与该图片进行关联,否则要双击才能打开查看之。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|站长邮箱|小黑屋|手机版|Office中国/Access中国 ( 粤ICP备10043721号-1 )  

GMT+8, 2024-11-17 17:52 , Processed in 0.090391 second(s), 35 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表