ASP update 数据库资料的一个问题让我百思不得其解 10

我不知道为什么,一段update数据的代码,总是无法按照指定的条件update制定的记录。1、首先我先说明表的结构:表setup_pagename:有这些字段:id(索引... 我不知道为什么,一段update数据的代码,总是无法按照指定的条件update制定的记录。

1、首先我先说明表的结构:
表setup_pagename:有这些字段:id(索引),lang_id,page_id,page_name。
其中有8记录:
lang_id=1,page_id=1,2,
lang_id=2,page_id=1,2,
lang_id=3,page_id=1,2,
lang_id=4,page_id=1,2,page_name各不相同
表setup_menuname:有这些字段:id(索引),lang_id,page_id,menu_id,menu_name。
其中有这些100条记录:
lang_id=1,page_id=1,menu_id=1~11,menu_name各不相同11条记录
lang_id=1,page_id=2,menu_id=1~14,menu_name各不相同14条记录
lang_id=2,page_id=1,menu_id=1~11,menu_name各不相同11条记录
lang_id=2,page_id=2,menu_id=1~14,menu_name各不相同14条记录
lang_id=3,page_id=1,menu_id=1~11,menu_name各不相同11条记录
lang_id=3,page_id=2,menu_id=1~14,menu_name各不相同14条记录
lang_id=4,page_id=1,menu_id=1~11,menu_name各不相同11条记录
lang_id=4,page_id=2,menu_id=1~14,menu_name各不相同14条记录

2、其次,我说明一下界面和操作:
Step1:通过下拉选项获得selectlang_id的值

Step2:通过下拉选项获得editpage_id的值

Step3:通过下面两个文本框,读出表1中lang_id=selectlang_id,page_id=editpage_id的记录:
<tr><%set rs3=server.CreateObject("adodb.recordset")
rs3.open "select id,page_name from setup_pagename where lang_id='"&selectlang_id&"' and page_id='"&editpage_id&"'",conn,1,1%>
<td>
<input type="hidden" name="p_id" type="text" size="10" value="<%=rs3("id")%>">
<input name="editpagename" type="text" size="39" value="<%=rs3("page_name")%>">
</td>
<%rs3.close
set rs3=nothing%></tr>
通过下面循环,读出表2中lang_id=selectlang_id,page_id=editpage_id的记录:
<%set rs4=server.CreateObject("adodb.recordset")
rs4.open "select id,menu_name from setup_menuname where lang_id='"&selectlang_id&"' and page_id='"&editpage_id&"' order by menu_id",conn,1,1
m=1
do while not rs4.eof%>
<tr><td><input class=wenbenkuang name="editmenuname<%=m%>" type="text" size="25" value="<%=rs4("menu_name")%>"></td></tr>
<%m=m+1
rs4.movenext
loop
rs4.close
set rs4=nothing%>
以上一些正常,我变换不同的selectlang_id,editpage_id,都能显示正确的资料。
Step4:在这个界面上修改资料,保存,通过form action执行下面一段代码:
p_id=trim(request("p_id"))
set rs1=server.CreateObject("adodb.recordset")
rs1.open "select page_name from setup_pagename where id='"&p_id&"'",conn,1,3
rs1("page_name")=trim(request("editpagename"))
rs1.Update
rs1.Close
set rs1=nothing

set rs2=server.CreateObject("adodb.recordset")
rs2.open "select menu_name from setup_menuname where (lang_id='"&selectlang_id&"') and (page_id='"&editpage_id&"') order by menu_id",conn,1,3
m=1
rs2.movefirst
do while not rs2.eof
rs2("menu_name")=trim(request("editmenuname"&m))
rs2.Update
rs2.movenext
m=m+1
loop
rs2.close
set rs2=nothing

看起来,这段程序应该这样执行:
在表setup_pagename中,找到id=p_id的那条记录,修改资料;
在表setup_menuname中,找到lang_id=selectlang_id,page_id=editpage_id的那些记录,修改资料;
展开
 我来答
匿名用户
2006-11-25
展开全部
非常抱歉,由于字数限制,我只能用回答来继续说明问题:

可结果老是不对,结果是:
在表setup_pagename中,lang_id=1,2,3,4, page_id=1的4条记录,资料都被相同地修改成界面输入的editpagename的值;
在表setup_menuname中,
lang_id=1,2,3,4, page_id=editpage_id, menu_id=1的4条记录,资料都被相同地修改成界面输入的editmenuname1的值;
lang_id=1,2,3,4, page_id=editpage_id, menu_id=2的4条记录,资料都被相同地修改成界面输入的editmenuname2的值;
lang_id=1,2,3,4, page_id=editpage_id, menu_id=3的4条记录,资料都被相同地修改成界面输入的editmenuname3的值;
......
直到eof为止

<font color=ff0000>我想知道:update资料的时候,究竟为什么没有按照where的条件update指定的记录?</font>

我甚至在代码中插入如下很多alert来跟踪参数和变量的值,alert返回的值都正确,但是结果就是不对:
p_id=trim(request("p_id"))
response.Write "<script language=javascript>alert('selectlang_id="&selectlang_id&",editpage_id="&editpage_id&",p_id="&p_id&"');</script>"
set rs1=server.CreateObject("adodb.recordset")
rs1.open "select page_name from setup_pagename where id='"&p_id&"'",conn,1,3
rs1("page_name")=trim(request("editpagename"))
rs1.Update
rs1.Close
set rs1=nothing

set rs2=server.CreateObject("adodb.recordset")
rs2.open "select menu_name from setup_menuname where (lang_id='"&selectlang_id&"') and (page_id='"&editpage_id&"') order by menu_id",conn,1,3
m=rs2.RecordCount
response.Write "<script language=javascript>alert('RS2 select 记录数="&m&"');</script>"
m=1
rs2.movefirst
do while not rs2.eof
origmenuname=trim(rs2("menu_name"))
editmenuname=trim(request("editmenuname"&m))
response.Write "<script language=javascript>alert('Original menu_name="&origmenuname&", \n Final menu_name="&editmenuname&"');</script>"
rs2("menu_name")=trim(request("editmenuname"&m))
rs2.Update
rs2.movenext
m=m+1
loop
rs2.close
set rs2=nothing

<font color=ff0000>这个问题已经困扰我一个星期了,救救我吧!</font>
百度网友dc91b32
2006-11-25 · TA获得超过5650个赞
知道大有可为答主
回答量:5653
采纳率:0%
帮助的人:0
展开全部
高手啊~~
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友4537c92
2006-12-01
知道答主
回答量:71
采纳率:0%
帮助的人:0
展开全部
看的累,你把源代码贴出来好了,中间说的什么。。。乱了。。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式