Office中国论坛/Access中国论坛
标题: [求助]为什么update嵌套select会报这样的错 [打印本页]
作者: aixiang225858 时间: 2006-11-16 15:47
标题: [求助]为什么update嵌套select会报这样的错
update [实装率] set [实装率].实际用户数 = (SELECT count(*) FROM [2006年10月用户上网记录] WHERE([2006年10月用户上网记录].接入地址 = '220.177.224.14'))
where [实装率].主机名 ='aaa';
我用一条这样的语句,结果总是报"操作必须使用一个可更新的查询"
在网上查了一下,报这样的错是因为写入权限不够
但如果将这两将语句分解,则都正常运行.
update [实装率] set [实装率].实际用户数 = 520
where [实装率].主机名 ='aaa';
SELECT count(*)
FROM [2006年10月用户上网记录]
WHERE([2006年10月用户上网记录].接入地址 = '220.177.224.14';
结果是520
希望各位不吝赐教.
[此贴子已经被作者于2006-11-16 8:10:14编辑过]
作者: wwwwa 时间: 2006-11-16 16:41
以下是引用aixiang225858在2006-11-16 7:47:00的发言:
update [实装率] set [实装率].实际用户数 = (SELECT count(*) FROM [2006年10月用户上网记录] WHERE([2006年10月用户上网记录].接入地址 = '220.177.224.14'))
where [实装率].主机名 ='aaa';
我用一条这样的语句,结果总是报"操作必须使用一个可更新的查询"
在网上查了一下,报这样的错是因为写入权限不够
但如果将这两将语句分解,则都正常运行.
update [实装率] set [实装率].实际用户数 = 520
where [实装率].主机名 ='aaa';
SELECT count(*)
FROM [2006年10月用户上网记录]
WHERE([2006年10月用户上网记录].接入地址 = '220.177.224.14';
结果是520
希望各位不吝赐教.
NO,是JET SQL不支持这种写法
TRY:
update [实装率] set [实装率].实际用户数 = DCOUNT("*","[2006年10月用户上网记录]", "接入地址 = '220.177.224.14'") where [实装率].主机名 ='aaa';
作者: aixiang225858 时间: 2006-11-16 16:44
忘了说,我用的是office2003中的access
作者: wwwwa 时间: 2006-11-16 16:49
你将兼容SQL SERVER勾上试试。
作者: aixiang225858 时间: 2006-11-16 16:52
刚试了一下,果然可以,太感谢了.再请问一下,如果我想同时根据多条件同时更新几条记录中的数据.应该怎样操作.
例如:
update [实装率] set [实装率].实际用户数 = DCOUNT("*","[2006年10月用户上网记录]", "接入地址 = '220.177.224.14'") where [实装率].主机名 ='aaa';
update [实装率] set [实装率].实际用户数 = DCOUNT("*","[2006年10月用户上网记录]", "接入地址 = '220.177.224.15'") where [实装率].主机名 ='bbb';
想一次性实现多个update.
作者: wwwwa 时间: 2006-11-16 16:56
try:
update [实装率] set [实装率].实际用户数 = DCOUNT("*","[2006年10月用户上网记录]", "接入地址 in '220.177.224.14','220.177.224.15'") where [实装率].主机名 in('aaa','bbb');
作者: aixiang225858 时间: 2006-11-16 17:02
刚试了一下,提示"未知".
刚才你说兼容SQL SERVER勾上应该在哪里勾.?
作者: wwwwa 时间: 2006-11-16 17:06
update [实装率] set [实装率].实际用户数 = DCOUNT("*","[2006年10月用户上网记录]", "接入地址 in( '220.177.224.14','220.177.224.15'") where [实装率].主机名 in('aaa','bbb');
在表、查询中
作者: aixiang225858 时间: 2006-11-16 17:20
上面的语句少打一个括号,我加上以后能运行,但给出的结果是aaa和bbb的实际用户数同时更新为'220.177.224.14'和'220.177.224.15'的计数值之和
update [实装率] set [实装率].实际用户数 = DCOUNT("*","[2006年10月用户上网记录]", "接入地址 in( '220.177.224.14','220.177.224.15')") where [实装率].主机名 in('aaa','bbb');
[此贴子已经被作者于2006-11-16 9:20:59编辑过]
作者: wwwwa 时间: 2006-11-16 17:28
那就只能分开写SQL语句了。
作者: aixiang225858 时间: 2006-11-16 17:33
这样的话就麻烦了.我总共有一百多个update,所以想一次性处理.
access里类似批处理的东东吗..?
非常感谢啊,解决我一个大问题了.
作者: wwwwa 时间: 2006-11-16 17:35
因为你的条件不同,只能分开写SQL语句,可以用VBA动态生成SQL语句,你自己试试吧。
作者: aixiang225858 时间: 2006-11-16 17:40
语句生成倒不是问题,关键处理一次处理100多条update.累.如果能批处理也好啊.
作者: aixiang225858 时间: 2006-11-16 18:01
再问一下,能不能update嵌套啊.
作者: andymark 时间: 2006-11-16 23:52
用ADO或DAO嵌套update吧
欢迎光临 Office中国论坛/Access中国论坛 (http://www.office-cn.net/) |
Powered by Discuz! X3.3 |