现有两个表:1科目表2凭证表[科目表]
----------------------------------------------
科目代码 科目名称 借方金额 贷方金额
----------------------------------------------
1001 现金
1002 银行存款
... ...
---------------------------------------------[凭证表]
--------------------------------------------
凭证号 科目代码 借方金额 贷方金额
-------------------------------------------
001 1001 1000
002 1001 2000
003 1001 1000
004 1001 100
005 1002 9999
006 1002 888
... ...
-------------------------------------------请问如何快速有效的将凭证表中的借方金额和贷方金额按照科目代码分类汇总到科目表中以下我的方法:ssql = "update 科目表 a, (select 科目代码, sum(借方金额) as 借方合计,sum(贷方金额) as 贷方合计 from 凭证条目表 group by 科目代码) b set a.本期借方= b.借方合计 ,a.本期贷方= b.贷方合计 where a.科目代码=b.科目代码"
cn.Execute ssql'实时错误:-2147467259:操作必须使用一个可更新的查询
说明:vb6+sp6+jet4.0+access中
----------------------------------------------
科目代码 科目名称 借方金额 贷方金额
----------------------------------------------
1001 现金
1002 银行存款
... ...
---------------------------------------------[凭证表]
--------------------------------------------
凭证号 科目代码 借方金额 贷方金额
-------------------------------------------
001 1001 1000
002 1001 2000
003 1001 1000
004 1001 100
005 1002 9999
006 1002 888
... ...
-------------------------------------------请问如何快速有效的将凭证表中的借方金额和贷方金额按照科目代码分类汇总到科目表中以下我的方法:ssql = "update 科目表 a, (select 科目代码, sum(借方金额) as 借方合计,sum(贷方金额) as 贷方合计 from 凭证条目表 group by 科目代码) b set a.本期借方= b.借方合计 ,a.本期贷方= b.贷方合计 where a.科目代码=b.科目代码"
cn.Execute ssql'实时错误:-2147467259:操作必须使用一个可更新的查询
说明:vb6+sp6+jet4.0+access中
这个是文件访问的权限问题,你看看有没有设置access数据库文件,要求允许完全控制。
a.本期借方= (select sum(b.借方金额) from 凭证条目表 b where a.科目代码=b.科目代码)
,a.本期贷方= (select sum(c.贷方金额) from 凭证条目表 c where a.科目代码=c.科目代码)
cn.Execute ssql
-------------------------------------------------------------------------
update 科目表 a set
a.本期借方= (select sum(b.借方金额) from 凭证条目表 b where a.科目代码=b.科目代码)
,a.本期贷方= (select sum(c.贷方金额) from 凭证条目表 c where a.科目代码=c.科目代码)
运行发生同样的错误
-------------------------------------------------------------------------
'实时错误:-2147467259:操作必须使用一个可更新的查询
-------------------------------------------------------------------------
to: Leftie(左手,为人民币服务)
-------------------------------------------------------------------------
ssql = "update a set a.本期借方= b.借方合计 ,a.本期贷方= b.贷方合计 from 科目表 a, (select 科目代码, sum(借方金额) as 借方合计,sum(贷方金额) as 贷方合计 from 凭证条目表 group by 科目代码) b where a.科目代码=b.科目代码"
cn.Execute ssql
-------------------------------------------------------------------------
vb6+sp6+jet4.0+access下面运行:
'操作符丢失在“b.贷方合计 from 科目表 a”中我知道上面的SQL在SQL SERVER中可以正常运行
求vb6+sp6+jet4.0+access环境下面的可以正常运行的SQL语句。
-------------------------------------------------------------------------
"
sql2=" update 科目表,TempTable set 科目表.借方金额=temptable. 借方金额, 科目表.贷方金额
=temptable.贷方金额 where 科目表.科目代码=TempTable.TempTable"
cnn.execute sql1
cnn.execute sql2
cnn.execute "drop table temptable"
...
.
sql1="SELECT 科目代码,借方金额 ,贷方金额 into TempTable from 凭证表 group by 科目代码
"
sql2=" update 科目表,TempTable set 科目表.借方金额=temptable. 借方金额, 科目表.贷方金额
=temptable.贷方金额 where 科目表.科目代码=TempTable.TempTable"
cnn.execute sql1
cnn.execute sql2
cnn.execute "drop table temptable"
...
ssql = "update 科目表 a, (select 科目代码, sum(借方金额) as 借方合计,sum(贷方金额) as 贷方合计 from 凭证条目表 group by 科目代码) b set a.本期借方= b.借方合计 ,a.本期贷方= b.贷方合计 where a.科目代码=b.科目代码"
cn.Execute ssql上面的应该来说和你的三句话是一样的,为什么不可以?
Access与SQLSERVER的一些兼容性问题:
SQLSERVER中更新多表的UPDATE语句:
UPDATE Tab1 SET a.Name = b.Name FROM Tab1 a,Tab2 b WHERE a.ID = b.ID;
同样功能的SQL语句在ACCESS中应该是
UPDATE Tab1 a,Tab2 b SET a.Name = b.Name WHERE a.ID = b.ID;
即:ACCESS中的UPDATE语句没有FROM子句,所有引用的表都列在UPDATE关键字后.
上例中如果Tab2可以不是一个表,而是一个查询,例:
UPDATE Tab1 a,(Select ID,Name From Tab2) b SET a.Name = b.Name WHERE a.ID = b.ID;
===============================================================
同样功能的SQL语句在ACCESS中应该是
UPDATE Tab1 a,Tab2 b SET a.Name = b.Name WHERE a.ID = b.ID;
即:ACCESS中的UPDATE语句没有FROM子句,所有引用的表都列在UPDATE关键字后.
上例中如果Tab2可以不是一个表,而是一个查询,例:
UPDATE Tab1 a,(Select ID,Name From Tab2) b SET a.Name = b.Name WHERE a.ID = b.ID;
=================================================================我的问题正是参考这个来的
为什么不行啊?
请仔细看我的问题,完全按照上面做的,为什么不行啊?