唉,foxpro高手救我!
嗯,这样,我想为某个数据表建个触发器,该表一旦做update操作,就统计的cj列数据,对其中一行id为0的cj列更新为其他列的平均值。
操作:
1先在库中建了个存储过程
PROCEDURE Myupd()
update bqks set cj=sum(cj)/count(*) where id<>0
end PROCEDURE
2在命令窗口中执行了
CREATE TRIGGER ON bqks FOR UPDATE AS Myupd()
执行代码出错!!我晕,在sql server 中这样可没问题啊。fox我可是菜鸟,求高手帮忙
[解决办法]
存储过程需要 数据库(DBC),自由表不支持
[解决办法]
MODIFY procedure
PROCEDURE Myupd
update bqks set cj=(select sum(cj) from bqks)/(select count(*) from bqks) where id<>0
return .T.
ENDPROC
CREATE TRIGGER ON table1 FOR UPDATE AS Myupd()
[解决办法]
楼主 是在DBC中吧?
建议不用VFP的DBC
[解决办法]
2楼的代码试试吧,在VFP9下没有提示出错
[解决办法]
提示什么?
[解决办法]
Create Database MyData.Dbc && 建立一个数据库Create Table bqks.Dbf (Id i,cj i) && 建立一个表Create Trigger On bqks For Update As Myupd()*-- vfp6.0Procedure Myupd() Select Nvl(Avg(cj),0) As cj_avg Into Cursor t1 From bqks Where Id<>0 Update bqks Set cj=t1.cj_avg Where bqks.Id=0Endproc*-- vfp9.0*!* Procedure Myupd()*!* Update bqks Set cj=b.cj_avg From (Select Nvl(Avg(cj),0) As cj_avg From bqks Where Id<>0) b Where bqks.Id=0*!* Endproc
[解决办法]
用代码实现吧,OR 更换数据库