hur.cn - 华软网

 热门搜索

同志们,我要把别人的数据导入到我的新系统中,发现他用access存放图片,字段竟为 '备注‘ 如何将这些数据读成文件,谢谢

  作者:未知    来源:网络    更新时间:2018/2/6
access 我从来没有用过它存放图片,只用过oracle的blob ,备注 是ole吗,如何将这些数据读出来啊,谢谢,各位!!!
------华软网友回答------
用selectblob语句
blob b
selectblob 备注 into :b from 表 where 其它字段 = '...';
if sqlca.sqlcode <> 0  then messagebox("test",sqlca.sqlerrtext)
messagebox("文件大小",len(b))
------华软网友回复------
备注是BLOB型的
用SELECTBLOB取出,写到文件中,就可以显示成图片了
------华软网友回复------
access数据库中表的类型中:
“备注”类型 是长文本或文本和数字的组合。  最多为 65,535 个字符(如果 Memo 字段是通过 DAO 来操作并且只有文本和数字 [非二进制数据] 保存在其中,则 Memo 字段的大小受数据库大小的限制)。
要是存放图片这种大二进制文件,倒是可以用
“OLE 对象”类型 是Microsoft Access 表中链接或嵌入的对象(例如 Microsoft Excel 电子表格、Microsoft Word 文档、图形、声音或其他二进制数据)。最多为 1 G 字节(受可用磁盘空间限制)。
对于像图片之类的大二进制文件,在PB中操作就要用selectblob的SQL语句,就像lzheng2001的意思:
blob b
selectblob 备注 into :b from 表 where 其它字段 = '...';
if sqlca.sqlcode <> 0  then messagebox("test",sqlca.sqlerrtext)
messagebox("文件大小",len(b))


------华软网友回复------
同志们,我是用odbc进行连接,可是 去不出图片来,代码如下:
SELECTBLOB ryzp INTO:b_pic  FROM rcpx_rczj  WHERE zjxh=:zjxh;
   commit;
   if sqlca.SQLDBCODE <> 0 then
  messagebox('','read error')
   end if

   integer li_FileNum
   li_FileNum = FileOpen("c:\zjl.jpg", &
StreamMode!, Write!, LockWrite!, replace!)
   flen=len(b_pic)
  if flen > 32765 then
     if mod(flen,32765)=0 then
        loops = flen/32765
     else
     loops = (flen/32765) + 1
     end if
  else
     loops = 1
  end if
  for i = 1 to loops
  ttt=( i - 1 ) *32765
  temp=blobmid(b_pic,ttt,32765)
     filewrite(li_FileNum,temp)
  next
  fileclose(li_FileNum)
  dw_zjxx.Modify("p_1.Filename='c:\zjl.jpg'")
  filedelete("c:\zjl.jpg")

请各位指教!是不是access取图片需要特殊的处理呢

------华软网友回复------
在操作blob之前是不是需要将sqlca.autocommit设置成true?
------华软网友回复------
已经设置成true了 ,,,
------华软网友回复------
学习!关注!
------华软网友回复------
同志们,真郁闷,帮忙啊!
------华软网友回复------
文件先别删除
把文件用UE之类的编辑器打开,看一下文件头,是JPG格式,还是BMP?
改成正确的文件格式后,用画笔之类的工具打开,看能不能正常显示,如可以,程序也应该可以的...
------华软网友回复------
好,我试一下!
------华软网友回复------
同志们,小白兔,快来帮忙看看啊!      
华软声明:本内容来自网络,如有侵犯您版权请来信指出,本站立即删除。