VFP+SQl,无法更新TEXT字段

xilaianzxsc 2016-07-09 10:33:59
VFP9 + SQL2000

问题描述:

1 、FaHuo_pic字段,是TEXT类型。用来存放用户图片

2、我放的图片是1.68K时,以下程序,无任何出错。 直接提示:保存成功

3、我放的图片是55.7K时,以下程序中,红色的那一行,出错。 提示 : 保存失败
(因为如果没有红色的那一行,就不出错。说明确认是红色的那一行是出错的)

4、我的要求是:不受图片大小的限制。红色的那一行,都应该要能执行。
请各位老师,帮我分析分析,我已经琢磨了一整天了。


SQLEXEC(nhandle,”select * from FaHuoHead where id =4“,"head_temp")
SELECT head_temp

CURSORSETPROP("tables","FaHuoHead","head_temp")
CURSORSETPROP("keyfieldlist","id","head_temp")
CursorSetProp("UpdateType",1,"head_temp")
CURSORSETPROP("updatablefieldlist","id,FaHuo_pic,FaHuoBeiZhu,FahuoRen,Fahuodate","head_temp")

TEXT TO m.cccLCmd_1 NOSHOW TEXTMERGE
id FaHuoHead.id,
FaHuo_pic FaHuoHead.FaHuo_pic,
FaHuoBeiZhu FaHuoHead.FaHuoBeiZhu,
FahuoRen FaHuoHead.FahuoRen,
Fahuodate FaHuoHead.Fahuodate
ENDTEXT

CURSORSETPROP("updatenamelist",m.cccLCmd_1,"head_temp") &&用临时表中的相应字段更新
CURSORSETPROP("sendupdates",.t.,"head_temp") &&设置为可更新
CURSORSETPROP("wheretype",2)
CURSORSETPROP("buffering",5) &&设置表缓冲



SELECT "head_temp"

UPDATE "head_temp" SET FaHuo_pic = null from "head_temp"
UPDATE "head_temp" SET FaHuoBeiZhu = null from "head_temp"
UPDATE "head_temp" SET FahuoRen = null from "head_temp"
UPDATE "head_temp" SET Fahuodate = null from "head_temp"


SELECT "head_temp"

lSuccess=CursorSetProp("sendupdates",.T.,"head_temp")
m.lSuccess=Tableupdate(.T.,.F.) &&successful update
If m.lSuccess=.T.
Messagebox("保存成功!",64,"信息提示")
Else
Messagebox("保存失败!",16,"信息提示")
Tablerevert(.T.)
ENDIF
...全文
181 5 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
xilaianzxsc 2016-07-11
  • 打赏
  • 举报
回复
真诚地感谢夜猫老师. 困绕我数日的难题,终于解决!
都市夜猫 2016-07-10
  • 打赏
  • 举报
回复
我测试的结果是
UPDATE "head_temp" SET FaHuo_pic = null from "head_temp"
这条语句不会出错,为何你那出错,原因尚不清楚

但最后 TableUpdate 会返回失败,vfp 得到的出错信息是 字符串太长
原因是前面有这个设置
CURSORSETPROP("wheretype",2)
因此 vfp 自动生成的发送给 sql server 的更新语句会是类似这样
update head_temp set SET FaHuo_pic = null where id=4 and FaHuo_pic = '... 原图片字符串内容 ...'
显然会因为图片过大而导致 where 条件太长,改成:
CURSORSETPROP("wheretype",1)
只比较主键字段,where 仅剩下 id = 4,没有后面一串,就可以更新成功
xilaianzxsc 2016-07-10
  • 打赏
  • 举报
回复
回老师: 如果该字段里面,所占字节较小.该命令, 什么问题也没有,一切OK 如果较大,就一定无法执行. 老师可以用1M的图片,试一下. 奇怪的是 : SQL下运行该命令,OK; 就是VFP下不能. 为了表示对老师的尊敬,加分到100分
都市夜猫 2016-07-09
  • 打赏
  • 举报
回复
我一般这样写: UPDATE head_temp SET FaHuo_pic = null WHERE 条件
xilaianzxsc 2016-07-09
  • 打赏
  • 举报
回复
我初步判断下来,应该用updateText,或writetext命令来解决。 可是,不会写,也不知道放在程序中的什么位置。 望老师指导。

2,748

社区成员

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

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