Access SQL update修改数据提示 操作必须使用一个可更新的查询
例如修改语句:
update 表A set 表A的字段 = (select sum(表B的某字段) from 表B where 表B某
字段 = '表B某字段值') where 表A的字段 = '表A的字段值'
当执行这条语句时Microsoft Office Access 操作必须使用一个可更新的查询。原因是
Access不支持这种修改的语法所以微软就提供一个这么一个函数来实现这个功能那就是
Dsum函数在帮助里面可以查看具体的使用方法。
DSum 函数
DSum 函数可用于计算一组指定记录域中的一组值的总和。可以在 Visual Basic、宏、
查询表达式或计算控件 中使用 DSum 函数。
例如可以在查询的计算字段表达式中通过 DSum 函数来计算某一段时间内特定雇员的总销
售量。或者在计算控件中使用 DSum 函数来显示特定产品的流水销售总额。
DSum(expr, domain, [criteria])
DSum 函数包含以下参数
参数 说明:
expr 表达式用于标识被计算值的总和的数字字段。它可以是标识表或查询中的字段的字符
串表达式或者是对该字段中的数据进行计算的 表达式。在 expr 中可以包含表中的字
段、窗体上的控件、常量或者函数的名称。如果 expr 包含函数那么该函数可以是内置的
或用户定义的但不能是其他域聚合函数或 SQL 聚合函数。
domain 字符串表达式用于标识组成域的一组记录。它可以是不需要参数的查询的表名或查
询名。
criteria 可选的字符串表达式用于约束对其执行 DSum 函数的数据的范围。例如criteria
常常等价于 SQL 表达式中除去 WHERE 关键字的 WHERE 子句。如果 criteria 被忽略DSum
函数将对整个域计算 expr。任何包含在 criteria 中的字段必须也是 domain 中的字段否
则 DSum 函数将返回 Null 值。
从中可以看出Access中根本不支持这种 set (a,b) = (x,y) 方式 另外ACCESS中也不支
持直接从本表进行 set x = (select SUM(x) from 同一个表。 因此必须使用Dsum函数
语法为:
update 表A set 表A的字段 = Dsum ("表B的某字段", "表B" ," 表B某字段 = '表B
某字段值'") where 表A的字段 = '表A的字段值'
或
update 表A set 表A的字段 = Dsum (‘表B的某字段', '表B' ,' 表B某字段 = "表
B某字段值"') where 表A的字段 = '表A的字段值'
这两条语法都能达到修改的效果,只是在符号上面有所修改而已。
例句:
update Oppointment set StateID=Dsum('ID','OppointmentState','StateName = "已带"') where ID=3;