CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
山寨机中的战斗机! 程序优化工程师到底对IT界有没有贡献
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  Delphi >  数据库相关

数据库中的OLE字段!!!!!!!!!!!!

楼主Zhong()2000-02-15 16:38:00 在 Delphi / 数据库相关 提问

我苦!  
  小弟在用Delphi数据库编程时,使用Access数据库引擎,当某一字段设为OLE对象时,在Access中能知道OLE对象类型,在Delphi中却不能,只显示成Blob字段,Why?   问题点数:250、回复次数:18Top

1 楼wm()回复于 2000-02-15 20:56:00 得分 0

热切盼望有人回答这个问题!Top

2 楼wm()回复于 2000-02-15 21:24:00 得分 0

大家都来看看这个问题呀!Top

3 楼Firing_Sky(火的天空)回复于 2000-02-15 21:53:00 得分 20

OLE对象归根结底还是一个Blob嘛!Top

4 楼Zhong()回复于 2000-02-15 22:00:00 得分 0

但是我很想知道OLE字段究竟包含什么OLE文档(Word文档?图片?),以便调用相应的OLE服务程序。Top

5 楼gypb(网螺)回复于 2000-02-16 19:24:00 得分 50

使用TOLECONTAINER可自动识别OLE文档。  
  ole字段其实是一个tBLOBSTREAM,可在一个FORM中放入ToleContainer,然后OLECONTAINER.LOADFROMESTREAM,修改完后用SAVETOSTREAM,如果是新建对象,用InsertObjectDialog,Top

6 楼Lin(林)回复于 2000-02-16 21:38:00 得分 0

gypb,先让我试试。Top

7 楼Lin(林)回复于 2000-02-16 21:59:00 得分 50

gypb:  
  你的方法好象是不行的。代码如下:  
  procedure   TForm1.Button1Click(Sender:   TObject);  
  var  
      MS:   TMemoryStream;  
  begin  
      MS   :=   TMemoryStream.Create;  
      try  
          (Table1.Fields[0]   as   TBlobField).SaveToStream(MS);  
          OleContainer1.LoadFromStream(MS);  
      finally  
          MS.Free;  
      end;  
  end;  
   
  当Button1   Click后,将出现‘Stream   read   error’错误提示。  
  Top

8 楼gypb(网螺)回复于 2000-02-17 18:53:00 得分 100

那是因为你的那字段为空,程序中我是这样编写的  
  子函数为  
  function     LoadFromField:boolean;  
  var  
      TempStream:TMemoryStream;  
  begin  
    //   tempstream:=createblobstream(currentfield,bmread);  
        result:=true;  
        try  
            Olecontainer1.LoadFromStream(loadstream);  
            with   OleContainer1   do  
              DoVerb(ovshow);  
        except  
            result:=false;  
        end;  
  end;  
  //loadstream   为table.createblobstream(field,bmread)函数返回的结果  
  主程序这样写  
  procedure   execute;  
  begin  
      if   not   loadfromfield   then  
      begin  
          Insert1Click(Sender);//读失败,就新增一个OLE对象。  
          with   OleContainer1   do  
              if   NewInserted   then  
                  DoVerb(PrimaryVerb);  
  end;            
   
  我的方法很好用,以上代码是我自编的OLE数据感知控件TDBOLEEdit中的一段代码,利用他想往数据库插什么就插什么。而且可以及时查看。就更tdbIMAGE一样。Top

9 楼Zhong()回复于 2000-02-17 20:21:00 得分 0

gypb:  
  小弟不才,按照你的方法又引起'Invalid   stream   format'错误,其实OLE字段已存有内容。能否将TDBOLEEdit给我一份?  
  先谢。   and   :)Top

10 楼gypb(网螺)回复于 2000-02-18 08:25:00 得分 20

先将含有OLE字段的记录删除,然后新增记录,这时再运行上述代码。  
  另要将OLECONTAINER1的OLDSTREAMFORMAT设为TRUE,COPYONSAVE设为TRUE。  
  造成你说的这种现象是因为:记录中已含有的OLE数据与当前OLECONTAINER格式并不相同。只有在OLE字段为空是用OLECONTAINER写入数据,下次才能正确读入数据。Top

11 楼gypb(网螺)回复于 2000-02-18 08:26:00 得分 0

另外:什么时候给分呀?!!!Top

12 楼gypb(网螺)回复于 2000-02-18 08:27:00 得分 0

另:你们有没有OICQ,我的是884977Top

13 楼gypb(网螺)回复于 2000-02-18 08:38:00 得分 10

另外:TDBOLEEDIT是公司内部资料,请原谅。(老总规定不应许外露)  
   
  当用LOADSFROMTREAM读人数据后,还要动太读入当前OLE对象支持的动作。具体从OLECONTAINER.ObjectVerbs[i]的到,在用DOVERB()调用。  
  用OleContainer1.ObjectPropertiesDialog可的知当前OLE对象的属性。Top

14 楼Zhong()回复于 2000-02-18 08:54:00 得分 0

gypb:  
  你的方法解决了一部分问题。其实我以前也尝试过,行倒是行。不过,当用上述方法写入数据后,再回到Access中,Access却又不能处理该字段了。咳,左右为难。  
  不过还是要谢谢的解答。嘻…   and   :=)Top

15 楼Zhong()回复于 2000-02-18 08:57:00 得分 0

gypb:  
  你的方法解决了一部分问题。其实我以前也尝试过,行倒是行。不过,当用上述方法写入数据后,再回到Access中,Access却又不能处理该字段了。咳,左右为难。  
  不过还是要谢谢的解答。分数嘛,目前还不能给你,因为…。不过,至少总会有你的一半。嘻…   and   :=)  
  Top

16 楼Lin(林)回复于 2000-02-18 13:34:00 得分 0

Zhong:  
  解决了以后告我一下,我也很想知道!Top

17 楼Zhong()回复于 2000-02-21 09:06:00 得分 0

有捆绑数据库OLE字段的控件也行啊。Top

18 楼gypb(网螺)回复于 2000-02-21 09:09:00 得分 0

我的解答对你一点作用也没有吗,一分都不给,气死我了Top

相关问题

  • 关与数据库中ole字段的使用
  • 数据库中的OLE字段的读取问题。
  • 在数据库中保存bmp字段
  • 数据库中字段的属性
  • 数据库中的空字段问题
  • mysql数据库中字段出现?号
  • 修改数据库中某个字段
  • C#+ACCESS数据库中字段修改!
  • 数据库中的字段问题!
  • 我怎样把数据库中OLE字段的内容,写入WORD中,谢谢!!!

关键词

  • 字段
  • 数据库
  • 数据
  • 代码
  • 文档
  • 解决
  • access
  • olecontainer
  • ole
  • gypb

得分解答快速导航

  • 帖主:Zhong
  • Firing_Sky
  • gypb
  • Lin
  • gypb
  • gypb
  • gypb

相关链接

  • Delphi类图书
  • Delphi类源码下载
  • Delphi控件下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo