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的那些记录,修改资料; 展开
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的那些记录,修改资料; 展开
3个回答
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>
可结果老是不对,结果是:
在表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>
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询