Office中国论坛/Access中国论坛

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

作者: zhuyiwen    时间: 2002-5-7 18:41
标题: 请教:在窗体中,如何将图片文件直接存入与表中OLE字段对应绑定的对象框中?

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

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

      [em04][em06][em04]
作者: tmtony    时间: 2002-5-7 19:39
我现在的程序都用这个函数(忘了从哪里弄过来了),挺好,应该还有其它办法,我记得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


作者: zhuyiwen    时间: 2002-5-7 23:02
有没有使用 DAO 的方法?
作者: zhuyiwen    时间: 2002-5-7 23:38

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

但是,我不知道怎么写代码,你能帮帮我吗?[em05]
作者: zhuyiwen    时间: 2002-5-8 00:11

经 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]
作者: tmtony    时间: 2002-5-8 00:45
不错!
作者: 竹笛    时间: 2002-5-8 04:26
好极了!不过不会用,我弄出来的图片,看不见图啊!
必须双击图片才能出来图片!怎么可看见图啊,我没用过。请教!
作者: zhuyiwen    时间: 2002-5-8 04:49

例子下载 (给binbow_w)

[em26]
作者: 竹笛    时间: 2002-5-8 05:09
标题: 试试我这个例子,如何解决?
希望的效果:单击按钮后显示图片。

文件下载


作者: cnwang    时间: 2002-5-8 16:57
标题: 请教:在窗体中,如何将图片文件直接存入与表中OLE字段对应绑定的对象框中?
以下是引用竹笛在2002-5-7 20:25:43的发言:
好极了!不过不会用,我弄出来的图片,看不见图啊!
必须双击图片才能出来图片!怎么可看见图啊,我没用过。请教!


OLE服务器的问题:
  你必须在你的电脑中装上能编辑该图片的软件,并与该图片进行关联,否则要双击才能打开查看之。

作者: chengweibing    时间: 2002-7-13 07:24
但是ole控件中有时只能显示这张图片的格式名称,而不是图片,这是该如何处理呢,我在自家电脑试过正学,面拷到办公室时(两机安装的系统者是winme与Access2000且装的图你处理软件也一样)却只能显示图片格式名称,请问为什么……
作者: zhuyiwen    时间: 2002-7-13 08:08
你查一下,你的机器上是否有OFFICE的照片编辑器。[em26]
作者: maximgary    时间: 2007-1-29 18:49
不能看到图片,只有双击才能看到呀!
作者: maximgary    时间: 2007-2-8 19:52
是呀!我们要的是,可以看到图片的




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