关于Access UPDATE中使用 DSUM的问题

bjturen 2009-06-21 05:41:16
有一个关于排名的应用, 参照网上其他人写的语句,我是想使用UPDATE和DSUM对排名进行更新,具体如下:
表名:Score_Rank
字段:Id,Name,Score,Rank
1 张三 89
2 李四 68
3 王五 79
4 刘二 79
5 赵七 88

单独使用如下语句查询没问题
SELECT Id,Name, Score, (SELECT IIF(ISNULL(SUM(1)), 1, SUM(1) + 1) FROM Score_Rank where Score > A.Score) AS Rank
FROM Score_Rank AS A
ORDER BY score DESC
1 张三 89 1
5 赵七 88 2
4 刘二 79 3
3 王五 79 3
2 李四 68 5


但想用如下语句更新就出问题了

UPDATE Score_Rank AS SR
SET SR.Rank = DSUM("B.Rank","(SELECT Id, Name, Score, (SELECT IIF(ISNULL(SUM(1)), 1, SUM(1) + 1) FROM Score_Rank where Score > A.Score) AS Rank
FROM Score_Rank AS A
ORDER BY score DESC) AS B","B.ID"= SR.ID);

提示“不能更新5个字段是因为类型转换失败,不能更新0个记录是因为键值冲突,不能更新0个记录是因为锁定冲突,不能更新0个记录是因为有效性规则冲突。”

请大家帮忙指点一下,thx!

...全文
298 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
rain5280 2011-07-15
  • 打赏
  • 举报
回复
不错,,学习下
bjturen 2009-06-21
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 ACMAIN_CHM 的回复:]
SQL codeupdate Score_Rank
set Rank=NZ(DCOUNT('*','Score_Rank','Score>' & Score))+1
[/Quote]

太感谢了!
ACMAIN_CHM 2009-06-21
  • 打赏
  • 举报
回复

update Score_Rank
set Rank=NZ(DCOUNT('*','Score_Rank','Score>' & Score))+1
bjturen 2009-06-21
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 ACMAIN_CHM 的回复:]
SQL codeupdate Score_Rank
set Rank=DCOUNT('*','Score_Rank','Score>=' & Score)




[/Quote]
多谢!上面得到结果:
1 张三 89 1
5 赵七 88 2
4 刘二 79 4
3 王五 79 4
2 李四 68 5

能否得到?
1 张三 89 1
5 赵七 88 2
4 刘二 79 3
3 王五 79 3
2 李四 68 5

ACMAIN_CHM 2009-06-21
  • 打赏
  • 举报
回复

DSUM中无法以SQL语句做为域输入,所以不行。

当您的问题得到解答后请及时结贴.
http://topic.csdn.net/u/20090501/15/7548d251-aec2-4975-a9bf-ca09a5551ba5.html

ACMAIN_CHM 2009-06-21
  • 打赏
  • 举报
回复

update Score_Rank
set Rank=DCOUNT('*','Score_Rank','Score>=' & Score)


bjturen 2009-06-21
  • 打赏
  • 举报
回复
是不是就是提示信息里类型转化的问题?

7,713

社区成员

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

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