VFP中通用型图片的处理问题

qweqwesx1 2014-04-15 05:34:38
我手头有VFP编写的一个程序,自然也有TABLE。TABLE里边包含通用型图片。在vfp程序中利用ole控件实现了图片的显示,貌似就是把ole的属性中的control source指向table中的图片就好了。

现在我需要把这个table的值转换到sql server中使用。SQL server 中我用image保存图片数据。在使用的时候竟然失败了。因为我使用powerbuilder做的前端开发,这个软件必须使用二进制进行读取,这是没有问题的,我成功从数据库读取出来了,但是最后显示到picture控件中的时候提示说 没有找到jpg,start with 0x15 0x4 之类的。 这个错误网上没有很好的解释。

接着我自己导入几个图片给SQL server 。成功实现了。
所以我觉得问题应该是vfp保存到SQL server 中图片“变质”了。

vfp没有学过,所以我希望有个方便快捷的办法把table中的图片读取出来,可以按照人员的身份证号码命名加以保存。但是不知道如何实现。
另外如果有别的可行的方法也希望大家指点。
...全文
691 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
jack_wang0823 2014-05-24
  • 打赏
  • 举报
回复
引用 楼主 qweqwesx1 的回复:
我手头有VFP编写的一个程序,自然也有TABLE。TABLE里边包含通用型图片。在vfp程序中利用ole控件实现了图片的显示,貌似就是把ole的属性中的control source指向table中的图片就好了。 现在我需要把这个table的值转换到sql server中使用。SQL server 中我用image保存图片数据。在使用的时候竟然失败了。因为我使用powerbuilder做的前端开发,这个软件必须使用二进制进行读取,这是没有问题的,我成功从数据库读取出来了,但是最后显示到picture控件中的时候提示说 没有找到jpg,start with 0x15 0x4 之类的。 这个错误网上没有很好的解释。 接着我自己导入几个图片给SQL server 。成功实现了。 所以我觉得问题应该是vfp保存到SQL server 中图片“变质”了。 vfp没有学过,所以我希望有个方便快捷的办法把table中的图片读取出来,可以按照人员的身份证号码命名加以保存。但是不知道如何实现。 另外如果有别的可行的方法也希望大家指点。
目前没有好的方法来通过命令转换通用字段的图片 可行的方法是 1建立一个表单 2表单上一个activatex 绑定控件, 数据源为 通用字段 来显示这个图片 3用RectToBmp(nLeft,nTop,nRight,nBotton,cFileName)抓取屏幕指定区域,保存为bmp图片,注意,只能抓取常规屏幕,一些电影、游戏等无法抓取。 下一个记录 刷新后 继续抓取
jack_wang0823 2014-05-24
  • 打赏
  • 举报
回复
引用 4 楼 xactest123 的回复:
“picture控件中的时候提示说 没有找到jpg,start with 0x15 0x4 之类” 估计是图片的格式问题。原来的图片很可能是BMP的,你现在的控件要求的是jpg格式。可否设置控件的属性,让其识别BMP格式。我没研究过PICTURE控件,估计从这里入手是个捷径。VFP的通用字段换成文件,好像没有现成的好办法。
vfp 6 以前的TABLE中, 通用字段存储图片,好像只能使用BMP格式的, 你看看是否是文件格式错误
YUAN168 2014-05-09
  • 打赏
  • 举报
回复
cFile=PUTFILE("文件另存为...",cFileName) &&cFilebody 是从数据库中读到的 字符流 CREATE CURSOR table2(filestream blob) APPEND BLANK replace filestream WITH cFilebody COPY MEMO filestream TO (cFile) ========================== 以上可以对应任意扩展名的文件
YUAN168 2014-05-09
  • 打赏
  • 举报
回复
SQL SERVER 中 Image字段保存的是 16进制的数据流,保存到数据库时,要特别处理。如果是用text 或是varchar 可能用 filetostr cFileStream=filetostr(getfile()) cBolbStream=cast(cFileStream as W) && 注意 W类型 ,可以对应 16进制 cCommandSql="insert into 表(字段) values(?cBolbStream)" &&注意此处不能用 "insert ...."+cBolbStream,因为 C+Q=C,Q+C=Q EXECSQL(cCommandSql)
xactest123 2014-04-20
  • 打赏
  • 举报
回复
“picture控件中的时候提示说 没有找到jpg,start with 0x15 0x4 之类” 估计是图片的格式问题。原来的图片很可能是BMP的,你现在的控件要求的是jpg格式。可否设置控件的属性,让其识别BMP格式。我没研究过PICTURE控件,估计从这里入手是个捷径。VFP的通用字段换成文件,好像没有现成的好办法。
十豆三 2014-04-19
  • 打赏
  • 举报
回复
通用字段中的图片,还原很不方便,和 SQL 表存储转换也不方便,所以你的问题必须放弃通用字段。
qweqwesx1 2014-04-19
  • 打赏
  • 举报
回复
引用 1 楼 apple_8180 的回复:
请参考: <VFP将图片或其他文件保存到SQL Server的Text类型字段或者Access的备注字段中,并可以还原或显示。> http://blog.csdn.net/apple_8180/archive/2008/04/25/2328001.aspx 此方法也适用于DBF表的备注(Memo)字段
亲,我的问题是vfp中有通用型的图片,这个贴我看过几遍了,说的基本方法还是把本地图片通过VFP保存到SQL中,跟我问的是两个问题。作者使用的函数都是与文件名有关的。这我不能使用呀。
十豆三 2014-04-16
  • 打赏
  • 举报
回复
请参考: <VFP将图片或其他文件保存到SQL Server的Text类型字段或者Access的备注字段中,并可以还原或显示。> http://blog.csdn.net/apple_8180/archive/2008/04/25/2328001.aspx 此方法也适用于DBF表的备注(Memo)字段

2,727

社区成员

发帖
与我相关
我的任务
社区描述
VFP,是Microsoft公司推出的数据库开发软件,用它来开发数据库,既简单又方便。
社区管理员
  • VFP社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧