求助:ASP如何统计一个表里的数据,更新到另一张表?

时间:2021-09-06 14:50:52
ASP+ACCESS
数据库名称:data.db
数据库里有两张表:tableA,tableB
tableA表,有三个字段,id,班级名称,学生人数
tableB表,有四个字段,id,班级名称,学生姓名,学生成绩
其中:tableA、tableB两表中的“班级名称”字段是一样的。

目的:求ASP代码,统计tableB表中每班的学生数,更新到tableA表对应班级的“学生人数”字段中。

tableA表样式:
id         班级名称      学生人数
1          A01班
2          A02班
3          A03班
...          ....

tableB表样式:
id         班级名称      学生姓名      学生成绩
1          A01班         张冲           566
2          A01班         李晓建         512
3          A01班         许莎莎         523
...          ....                        ...                       ...
56        A02班         刘欢庆         498
57        A02班         孙悦然         611
...          ...                        ...                       ...


万分感谢!谢谢!

8 个解决方案

#1


UPDATE tableA a set 学生人数 = (select count(*) from tableB b where b.班级名称=a.班级名称 ) 

#2


引用 1 楼 wangsdong 的回复:
UPDATE tableA a set 学生人数 = (select count(*) from tableB b where b.班级名称=a.班级名称 ) 


<%
dim conn,sql
Set conn = Server.CreateObject("ADODB.Connection")
DBPath = Server.MapPath("/data/data.mdb")
conn.Open "driver={Microsoft Access Driver (*.mdb)};dbq=" & DBPath
sql="UPDATE tableA a set 学生人数 = (select count(*) from tableB b where b.班级名称=a.班级名称 ) "
conn.execute(sql)
set conn=nothing
%>

完整的写法是这样吗?

#3


是的,运行是否正确?

#4


引用 3 楼 wangsdong 的回复:
是的,运行是否正确?


错误类型:
Microsoft OLE DB Provider for ODBC Drivers (0x80040E10)
[Microsoft][ODBC Microsoft Access Driver] 参数不足,期待是 1。
/bbbb.asp, 第 7 行

这一行:
conn.execute(sql)
参数不足,期待是1

应该如何修改啊?谢谢!

#5


conn.Open "driver={Microsoft Access Driver (*.mdb)};dbq=" & DBPath
改成
conn.Open "provider=Microsoft.Jet.OLEDB.4.0;Data Source="&DBPath

#6


引用 5 楼 wangsdong 的回复:
conn.Open "driver={Microsoft Access Driver (*.mdb)};dbq=" & DBPath
改成
conn.Open "provider=Microsoft.Jet.OLEDB.4.0;Data Source="&DBPath




代码如下:
<%
 dim conn,sql
 Set conn = Server.CreateObject("ADODB.Connection")
 DBPath = Server.MapPath("/data/data.mdb") 
 conn.Open "provider=Microsoft.Jet.OLEDB.4.0;Data Source="&DBPath
 'conn.Open "driver={Microsoft Access Driver (*.mdb)};dbq=" & DBPath
 sql="UPDATE tableA a set 班级人数 = (select count(*) from tableB b where b.班级名称=a.班级名称 ) "
 conn.execute(sql)
 set conn=nothing
 response.write("更新完成")
 %>

老问题解决了,又出现新问题:
Microsoft JET Database Engine (0x80004005)
操作必须使用一个可更新的查询。
/bbbb.asp, 第 9 行

百度了一下,按照百度的方法,修改文件夹,为数据库文件夹“安全”添加everyone,并设置权限。问题依旧……

#7


怪事吧?

ASP操作一个工作表时,没有问题;
只有在这里,操作两个工作表时,出现这个问题:

Microsoft JET Database Engine (0x80004005)
 操作必须使用一个可更新的查询。

#8


这是个新新问题。另开贴求助吧。

感谢wangsdong 的帮助,谢谢!

#1


UPDATE tableA a set 学生人数 = (select count(*) from tableB b where b.班级名称=a.班级名称 ) 

#2


引用 1 楼 wangsdong 的回复:
UPDATE tableA a set 学生人数 = (select count(*) from tableB b where b.班级名称=a.班级名称 ) 


<%
dim conn,sql
Set conn = Server.CreateObject("ADODB.Connection")
DBPath = Server.MapPath("/data/data.mdb")
conn.Open "driver={Microsoft Access Driver (*.mdb)};dbq=" & DBPath
sql="UPDATE tableA a set 学生人数 = (select count(*) from tableB b where b.班级名称=a.班级名称 ) "
conn.execute(sql)
set conn=nothing
%>

完整的写法是这样吗?

#3


是的,运行是否正确?

#4


引用 3 楼 wangsdong 的回复:
是的,运行是否正确?


错误类型:
Microsoft OLE DB Provider for ODBC Drivers (0x80040E10)
[Microsoft][ODBC Microsoft Access Driver] 参数不足,期待是 1。
/bbbb.asp, 第 7 行

这一行:
conn.execute(sql)
参数不足,期待是1

应该如何修改啊?谢谢!

#5


conn.Open "driver={Microsoft Access Driver (*.mdb)};dbq=" & DBPath
改成
conn.Open "provider=Microsoft.Jet.OLEDB.4.0;Data Source="&DBPath

#6


引用 5 楼 wangsdong 的回复:
conn.Open "driver={Microsoft Access Driver (*.mdb)};dbq=" & DBPath
改成
conn.Open "provider=Microsoft.Jet.OLEDB.4.0;Data Source="&DBPath




代码如下:
<%
 dim conn,sql
 Set conn = Server.CreateObject("ADODB.Connection")
 DBPath = Server.MapPath("/data/data.mdb") 
 conn.Open "provider=Microsoft.Jet.OLEDB.4.0;Data Source="&DBPath
 'conn.Open "driver={Microsoft Access Driver (*.mdb)};dbq=" & DBPath
 sql="UPDATE tableA a set 班级人数 = (select count(*) from tableB b where b.班级名称=a.班级名称 ) "
 conn.execute(sql)
 set conn=nothing
 response.write("更新完成")
 %>

老问题解决了,又出现新问题:
Microsoft JET Database Engine (0x80004005)
操作必须使用一个可更新的查询。
/bbbb.asp, 第 9 行

百度了一下,按照百度的方法,修改文件夹,为数据库文件夹“安全”添加everyone,并设置权限。问题依旧……

#7


怪事吧?

ASP操作一个工作表时,没有问题;
只有在这里,操作两个工作表时,出现这个问题:

Microsoft JET Database Engine (0x80004005)
 操作必须使用一个可更新的查询。

#8


这是个新新问题。另开贴求助吧。

感谢wangsdong 的帮助,谢谢!