update 更新问题,提示必须是一个可更新的查询

lanseerme 2007-06-15 03:37:43
错误类型:
Microsoft JET Database Engine (0x80004005)
操作必须使用一个可更新的查询。
/Class_hwsp.asp, 第 55 行

有哪位高人能够解决?

要实现的功能是:表 tmpData1 中的字段 ddMoney 的数据来源是 ShangPin 表 相对应的sShouJia 字段,其实还有一步,就是将售价乘以数量。

源程序如下:
sql="Update [tmpData1] Set ddMoney=(select sShouJia from [ShangPin] where spBianHao=tmpData1.spBianHao and cBianHao=tmpData1.cBianHao)"
hwsp.Execute(sql)


谢谢各位了



-------------------------------
点击无限社区:http://www.djwx.net.cn
...全文
272 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
vbman2003 2007-06-16
  • 打赏
  • 举报
回复
如果更新没有使用access聚合函数,可以用wwwwb()的语句:

Update [tmpData1],[ShangPin]
Set ddMoney=sShouJia
where [ShangPin].spBianHao=tmpData1.spBianHao
and [ShangPin].cBianHao=tmpData1.cBianHao
OracleRoob 2007-06-15
  • 打赏
  • 举报
回复
如果是在ASP中调用,则不能使用DSUM()域函数,因为DSUM()是Access内部函数,不是jet-SQL函数。

需要生成中间表,然后再用表关联更新。
OracleRoob 2007-06-15
  • 打赏
  • 举报
回复
Access使用的是Jet-SQL,而SQL Server使用的是T-SQL,两者用法上相差很大。

Access的Update语句中,对于子查询的支持远比不上SQL Server,所以要使用域函数。



JET SQL 帮助(jet4 access2000)下载地址

http://www.access911.net/index.asp?board=8&recordid=75FAB71E&tt=




wwwwb 2007-06-15
  • 打赏
  • 举报
回复
sql="Update [tmpData1], [ShangPin] Set ddMoney=sShouJia where [ShangPin].spBianHao=tmpData1.spBianHao and [ShangPin].cBianHao=tmpData1.cBianHao"
wwwwb 2007-06-15
  • 打赏
  • 举报
回复
sql="Update [tmpData1], [ShangPin] Set ddMoney=sShouJia where [ShangPin].spBianHao=tmpData1.spBianHao and [ShangPin].cBianHao=tmpData1.cBianHao)"
wwwwb 2007-06-15
  • 打赏
  • 举报
回复
JET SQL不支持这种写法。
wwwwb 2007-06-15
  • 打赏
  • 举报
回复

1、在ACCESS中,用DSUM;
2、生成临时表,再替换;

7,714

社区成员

发帖
与我相关
我的任务
社区描述
Microsoft Office Access是由微软发布的关系数据库管理系统。它结合了 MicrosoftJet Database Engine 和 图形用户界面两项特点。
社区管理员
  • Access
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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