注册 登录
编程论坛 ASP技术论坛

[求助]版主看看一个update合计的问题!

zmp 发布于 2007-08-15 16:44, 947 次点击
<%
sql="select [1月],[2月],[3月],[4月],[5月],[6月],[7月],[8月],[9月],[10月],[11月],[12月],([1月]+[2月]+[3月]+[4月]+[5月]+[6月]+[7月]+[8月]+[9月]+[10月]+[11月]+[12月]) as hj from jkhz"
set hzrs=server.CreateObject("adodb.recordset")
hzrs.open sql,conn,1,3
max=hzrs.eof
for i=1 to max
zg=hzrs("hj")(i)
zmp="update jkhz set total='"&zg&"'"
conn.execute zmp
next
hzrs.close
set hzrs=nothing
conn.close
set conn=nothing
%>
问题是:上面语句执行后,数据库中所有的total的值都是第一条记录1月至12月的总计,不循环语句要怎样写?
15 回复
#2
yms1232007-08-15 16:51

楼主统计1到12月的总和还是每个月的总和?

#3
zmp2007-08-15 16:56
回复:(yms123)楼主统计1到12月的总和还是每个月的总...
1到12月的总和
#4
yms1232007-08-15 17:01
jkhz每条记录都有总和?
#5
multiple19022007-08-15 17:04


真牛

我提问的时候从来没指名要版主来回答


我个人看法 不想看不要看。

update 语句可以用where字句,可选,与1=1是and的关系
#6
zmp2007-08-15 17:10
回复:(yms123)jkhz每条记录都有总和?
是的,每一行记录是一种物料,TOTAL就是1到12月总和
#7
yms1232007-08-15 17:23
<%
sql="select [1月],[2月],[3月],[4月],[5月],[6月],[7月],[8月],[9月],[10月],[11月],[12月],([1月]+[2月]+[3月]+[4月]+[5月]+[6月]+[7月]+[8月]+[9月]+[10月]+[11月]+[12月]) as hj from jkhz"
set hzrs=server.CreateObject("adodb.recordset")
hzrs.open sql,conn,1,3
max=hzrs.eof
for i=1 to max
zg=hzrs("hj")(i)
zmp="update jkhz set total='"&zg&"'"
conn.execute zmp
next
hzrs.close
set hzrs=nothing
conn.close
set conn=nothing
%>
如果是这样统计的话 update要加条件的,每条记录的主键字段是哪个?
#8
zmp2007-08-15 17:41
回复:(yms123)
主键是spno,但没有查询出来呢?
#9
yms1232007-08-15 20:23
<%
sql="select spno,[1月],[2月],[3月],[4月],[5月],[6月],[7月],[8月],[9月],[10月],[11月],[12月],([1月]+[2月]+[3月]+[4月]+[5月]+[6月]+[7月]+[8月]+[9月]+[10月]+[11月]+[12月]) as hj from jkhz"
set hzrs=server.CreateObject("adodb.recordset")
hzrs.open sql,conn,1,3
max=hzrs.eof
for i=1 to max
zg=hzrs("hj")(i)
zmp="update jkhz set total='"&zg&"' where spno="&hzrs("spno")
conn.execute zmp
next
hzrs.close
set hzrs=nothing
conn.close
set conn=nothing
%>
加主键条件进行更新试试。
#10
zmp2007-08-16 09:29
回复:(yms123)

一样,还是不可以

#11
ayue2222007-08-16 09:40
<%
sql="select spno,[1月],[2月],[3月],[4月],[5月],[6月],[7月],[8月],[9月],[10月],[11月],[12月],([1月]+[2月]+[3月]+[4月]+[5月]+[6月]+[7月]+[8月]+[9月]+[10月]+[11月]+[12月]) as hj from jkhz"
set hzrs=server.CreateObject("adodb.recordset")
hzrs.open sql,conn,1,3
sql=hzrs.GetRows()
for i=0 to Ubound(SQL,2)
zg=sql(13,i)
zmp="update jkhz set total='"&zg&"' where spno="&sql(0,i)
conn.execute zmp
next
hzrs.close
set hzrs=nothing
conn.close
set conn=nothing
%>
#12
zmp2007-08-16 09:43
回复:(yms123)
执行后数据库是这样的:

spno 1月 2月 3月 4月 5月 6月 7月 8月 9月 10月 11月 12月 total

sp1 0 0 2500 0 0 10 0 0 0 0 0 0 2510
sp10 0 0 0 0 0 0 0 1320 0 0 0 0 2510
sp11 0 0 0 0 0 0 0 0 0 0 0 0 2510
sp12 125 0 0 0 0 0 10 0 0 0 0 0 2510
sp13 0 0 240 0 0 0 0 1830 0 0 0 0 2510
sp14 12656 0 0 0 0 0 0 0 0 0 0 0 2510
sp15 0 0 0 0 0 0 0 0 0 0 0 0 2510
sp16 0 0 0 0 0 0 0 0 0 0 0 0 2510
sp17 0 0 0 0 0 0 0 0 0 0 0 0 2510
sp18 0 268 0 0 0 0 0 0 0 0 0 0 2510
#13
zmp2007-08-16 09:52
回复:(ayue222)
ayue222
yms123
谢谢你们的帮助可以了!
#14
zmp2007-08-16 10:00
回复:(ayue222)
sql=hzrs.GetRows()
for i=0 to ubound(sql,2)
zg=sql(13,i)
ayue222能解释下这三句代码的含义吗?小弟初学ASP不明白呢?
#15
ayue2222007-08-16 10:10
sql=hzrs.GetRows() //将数据集生成二维数组
for i=0 to ubound (sql,2) //循环读取数组
zg=sql(13,i) //13是 sql="select spno,[1月],[2月],[3月],[4月],[5月],[6月],[7月],[8月],[9月],[10月],[11月],[12月],([1月]+[2月]+[3月]+[4月]+[5月]+[6月]+[7月]+[8月]+[9月]+[10月]+[11月]+[12月]) as hj from jkhz" 这个hj的次序
#16
zmp2007-08-16 12:20
回复:(ayue222)sql=hzrs.GetRows() //将数据集生成...

谢谢

1