罕见难题:如何将数据窗口里的blob字段中的内容保存到数据库中啊?有奇怪现象!请看具体情况:

侠之大者 f 2002-12-28 01:08:12
现有数据窗口dw_1,dw_2,dw_3,三个数据窗口中各有一个blob字段,其中前两个都是excel格式的文件,dw_3中的是word型的文件,现在的问题是每次双击其中blob字段打开来编辑之后,点保存的时候,第三个blob字段的值可以被保存,但前两个不能被保存,即在其他窗口打开时,只可以看到上述dw_3中的那个blob字段的值被正确地改变了,前两个根本就不变,还是保持着原来的样子.

流程:
选择样本文件-->将样本文件调入到数据窗口--->双击该blob字段-->打开相应的文件(Excel或word格式)开始编辑文件--->点文件编辑窗口的更新(等同于ctrl+s)-->点保存数据窗口

结果:
每次都只保存了dw_3中的blob字段的内容的变化.

注明:
这三个数据窗口的设置完全一样,其中的blob字段都是设置为excel工作表.
...全文
92 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
YewPu 2003-02-15
  • 打赏
  • 举报
回复
相金先惠,格外留神!
sonicexiao 2003-02-13
  • 打赏
  • 举报
回复
sfdoony
我碰到的问题和你一样的,怎样把样本文件存到数据库里,在数据窗口双击打开文件编辑啊?怎样实现?
bomber2001 2002-12-29
  • 打赏
  • 举报
回复
String ls_person_id, ls_FullFileName, ls_FileName
Int li_file_open_return_value
Int li_num
Int li_i
Int li_if_have_ph
Long ll_file_length
Blob lb_full_photo
Blob lb_photo,lb_blob
IF GetFileOpenName ( "选择图片", ls_FullFileName, ls_FileName, "bmp", "BMP FILES,*.bmp" ) = 0 THEN
IF NOT IsNull ( lb_Photo ) THEN
p_photo.Visible = TRUE
SetPicture ( p_photo, lb_Photo )
RETURN
END IF
END IF

//获取当前选定的照片文件大小
ll_File_Length = FileLength( ls_FullFileName )
//打开当前照片文件
li_file_open_return_value = FileOpen ( ls_FullFileName, StreamMode! , Read!, LockRead!)
Long loops,i
//如果成功打开
IF li_file_open_return_value > 0 THEN
IF ll_File_Length > 32765 THEN
IF Mod(ll_File_Length, 32765) = 0 THEN
loops = ll_File_Length/32765
ELSE
loops = (ll_File_Length/32765) + 1
END IF
ELSE
loops = 1
END IF
FOR i = 1 to loops
//将照片读取到共享Bolb变量sb_photo中
FileRead (li_file_open_return_value,lb_blob )
//将所有的Bolb变量相加
lb_full_photo = lb_full_photo + lb_blob
NEXT
//关闭照片文件
FileClose( li_file_open_return_value )

//将Blob照片变量更新到表中
UPDATEBLOB CLT_JTCLDA SET zhaopiao = :lb_full_photo where CLID = :ls_person_id ;
IF SQLCA.SQLCODE <> 0 THEN
MessageBox( '提 示', '数据操作失败,请与系统管理员联系' )
ROLLBACK USING SQLCA ;
ELSE
COMMIT USING SQLCA ;
p_photo.Visible = TRUE
SetPicture( p_photo, lb_full_photo )
END IF
END IF
侠之大者 f 2002-12-29
  • 打赏
  • 举报
回复
我最初的时候就是采用楼上的方法.可后来客户嫌这样还不够简单,还要求把样本文件也存到数据库里,想就在数据窗口双击打开文件后可以编辑.
所以现在是把样本文件全存到数据库中了,上述问题的窗口的作用是让他们从数据库中选择样本文件,然后在数据窗口中双击打开编辑,而不是先在程序外编辑好文件再上传上来啊.
侠之大者 f 2002-12-28
  • 打赏
  • 举报
回复
我也怀疑可能是pb的bug.希望各位多指点啊!
linfeng969 2002-12-28
  • 打赏
  • 举报
回复
是不是pb中的bug?
linjwa 2002-12-28
  • 打赏
  • 举报
回复
我也觉得用updateblob比较好,不过大于32K的文件要分段读写。网上有这方面的代码。
侠之大者 f 2002-12-28
  • 打赏
  • 举报
回复
纠正问题:
并非每次都不保存前两个数据窗口中的blob字段的内容的变化, 竟然有的时候会保存,但十次中难得有一次到两次会保存前两个.怪哉!
liu7537 2002-12-28
  • 打赏
  • 举报
回复
对于blob字段的保存,建议你使用pb的updateblob命令来实现!该命令的用法与普通的update一样,只是更新的字段应该是blob字段而已。
侠之大者 f 2002-12-28
  • 打赏
  • 举报
回复
楼上的,问题不在此处.你没看清题目吗?有个是完全可以保存的.
另两个不稳定.
yzqmars 2002-12-28
  • 打赏
  • 举报
回复
你可以查看一下SQLCA.AUTOCOMMIT的属性,在对blob字段进行更新时必须要保证SQLCA.AUTOCOMMIT的值为TRUE

401

社区成员

发帖
与我相关
我的任务
社区描述
PowerBuilder 非技术版
社区管理员
  • 非技术版社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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