回 帖 发 新 帖 刷新版面

主题:update 更新问题!

这个是在VFP9 中的数据更新语句,在VFP 中执行后返回-1,不能执行!

在SQL 中可以正确执行,各位朋友帮忙看看是何原因!感谢!

=SQLEXEC(lnHandle,"UPDATE 统计表 SET 统计表.核准户数减 = &统计1.核准户数减,统计表.居住面积减 =&统计1.居住面积减,统计表.减免租金减 =&统计1.减免租金减,统计表.核销户数减 = &统计1.核销户数减 from 统计表,'&统计1' WHERE 统计表.乡镇名称 = '&统计1.乡镇名称'")

在SQL 2000查询分析器中,去掉&后能正确执行!

UPDATE 统计表 SET 统计表.核准户数减 = 统计1.核准户数减,统计表.居住面积减 =统计1.居住面积减,统计表.减免租金减 =统计1.减免租金减,统计表.核销户数减 = 统计1.核销户数减 from 统计表,统计1 WHERE 统计表.乡镇名称 = 统计1.乡镇名称

回复列表 (共5个回复)

沙发

我没仔细看你的语句,太长啦.我建议:
1.将语句先做一个字段变量少量执行,看看能不能通过,如能,则可能就是一条vfp语句太长了;
2.建议你在sql下搞触发器,满足了条件就执行在SQL 中执行,对今后的维护也方便.

[b][size=2]我的[color=0000FF]主要观点是:


建议大家考虑vfp的编程序时,只设计条件命令,

然后满足了条件就执行=SQLEXEC(lnHandle.....,

在sql下搞触发器,在SQL触发器 中执行,

这样一来就不用改vfp的程序了,

对今后的维护也方便.[/color][/size][/b]

板凳

感谢你的回答!
UPDATE 为何分组不能适用,如果不能适用的话,会非常麻烦!如:
tj1=SQLEXEC(lnHandle,"UPDATE 租金减免 SET 核销户数减 = (SELECT COUNT(*) FROM jbzl,bzmx,xz WHERE bzmx.sfz =jbzl.sfz and bzxz =xz.xzmc and bzqk ='核销' and bzlx ='租金减免' GROUP BY bzxz)")
如果不用的 GROUP BY bzxz 可以执行,但结果就不正确,所有的乡镇都加一起了!
我通过分组,每个乡镇分别计数!
查SQL资料他不支持!不知为何?
 


3 楼

SQLEXEC(lnHandle,"UPDATE 统计表 SET 统计表.核准户数减 = 租金减免.核准户数减,统计表.居住面积减 = 租金减免.居住面积减,统计表.减免租金减 = 租金减免.减免租金减,统计表.核销户数减=租金减免.核销户数减 from 统计表,租金减免 WHERE 统计表.乡镇名称 =租金减免.乡镇名称")

问题解决了以上就可以!

4 楼


一下更长也可以正确执行!
SQLEXEC(lnHandle,"INSERT INTO 统计表 (乡镇名称,核准户数减,核准户数减B,居住面积减,居住面积减B,减免租金减,减免租金减B,核销户数减,核销户数减B,核准户数补,核准户数补B,补贴面积补,补贴面积补B,"+ ;
"发放补贴补,发放补贴补B,核销户数补,核销户数补B,安置户数廉,安置户数廉B,安置面积廉,安置面积廉B,收回户数廉,收回户数廉B) "+ ; 
"SELECT 镇名称='合   计',SUM(核准户数减) AS 核准户数减,SUM(核准户数减B) AS 核准户数减B,SUM(居住面积减) AS 居住面积减,"+ ;
"SUM(居住面积减B) AS 居住面积减B,SUM(减免租金减) AS 减免租金减,SUM(减免租金减B) AS 减免租金减B,SUM(核销户数减) AS 核销户数减,"+ ;
"SUM(核销户数减B) AS 核销户数减B,SUM(核准户数补) AS 核准户数补,SUM(核准户数补B) AS 核准户数补B,SUM(补贴面积补) AS 补贴面积补,"+ ;
"SUM(补贴面积补B) AS 补贴面积补B,SUM(发放补贴补) AS 发放补贴补,SUM(发放补贴补B) AS 发放补贴补B,SUM(核销户数补) AS 核销户数补,"+ ;
"SUM(核销户数补B) AS 核销户数补B,SUM(安置户数廉) AS 安置户数廉,SUM(安置户数廉B) AS 安置户数廉B,SUM(安置面积廉) AS 安置面积廉,"+ ;
"SUM(安置面积廉B) AS 安置面积廉B,SUM(收回户数廉) AS 收回户数廉,SUM(收回户数廉B) AS 收回户数廉B FROM 统计表")

5 楼

去掉&

你向SQL SERVER传递的是带“&” 的语句,而你在SQL SERVER中运行成功的是不带“&”的语句.

我来回复

您尚未登录,请登录后再回复。点此登录或注册