| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 875 人关注过本帖
标题:ASP批量修改数据库记录发现一个奇怪的问题,高手进来帮忙解答一下,谢谢!
只看楼主 加入收藏
my1127
Rank: 1
等 级:新手上路
帖 子:17
专家分:0
注 册:2011-6-5
结帖率:60%
收藏
已结贴  问题点数:15 回复次数:4 
ASP批量修改数据库记录发现一个奇怪的问题,高手进来帮忙解答一下,谢谢!
批量修改数据.rar (7.86 KB)

附件里是我的数据库跟代码,可以下载调试。


数据库:db.mdb
表:kehu
字段:
图片附件: 游客没有浏览图片的权限,请 登录注册



修改页面index.asp代码如下:
程序代码:
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>批量读取数据</title>
</head>

<body>
<form name="form1" method="post" action="?action=edit">
<table border="0" cellspacing="1" cellpadding="0" width="700" align="center">
  <tr align="center">
    <td>客户名称</td>
  </tr>
<%
  strConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="+Server.mappath("db.mdb")+";Persist Security Info=False"
  set conn = Server.CreateObject("ADODB.Connection")
  conn.open strConn

 
  sql="select * from kehu order by ID asc"
  set rs=server.CreateObject("adodb.recordset")
  rs.open sql,conn,1,1
  if rs.bof and rs.eof then
  response.Write("没有找到您需要的记录!")
  else
  do while not rs.eof
  %>
  <tr>
    <td align="center"><input name="mc" type="text" value="<%=rs("mc")%>" /><input name="id" type="hidden" value="<%=rs("id")%>"/></td>
  </tr>
<%
  rs.movenext
  loop
  end if
  rs.close
  set rs=nothing
  %>
</table>
<p align="center">
<input type="submit" name="tsub" value="修改">
&nbsp;
<input type="reset" name="Submit" value="重置" />
</p>
</form>
</body>
</html>
<%
if request("action")="edit" then
'===========================================================
id=split(trim(request.Form("id")),",")
mc=split(trim(request.Form("mc")),",")

for i=0 to ubound(id)
set rs=server.createobject("adodb.recordset")
sql="select * from kehu where id="&id(i)
rs.open sql,conn,1,3

rs("mc")=trim(mc(i))

rs.update
next
rs.close
set rs=nothing
'=================================================================

conn.close
set conn=nothing
response.write "<SCRIPT language=JavaScript>alert('批量修改成功!');window.location.href='index.asp'</SCRIPT>"
end if
%>

现在的问题是这样:

1、如果数据库中只有一条记录,我在index.asp页面把文本框中的内容清空的话修改就会出错,但是文本框的内容不为空就能正常修改。

2、如果数据库中有多条记录,我把文本框里面的内容都清空了,修改也没问题。

高手帮忙解答一下。
搜索更多相关主题的帖子: 数据库 记录 
2011-06-22 12:04
dzt0001
Rank: 13Rank: 13Rank: 13Rank: 13
等 级:蒙面侠
威 望:5
帖 子:1281
专家分:4998
注 册:2005-10-12
收藏
得分:15 
当只有一个记录时,没有逗号分隔,你用trim,这时如果值=""的话,用split,ubound(id)=-1。理解了吗?更新前做一下判断,id中不含逗号的,就不要用split和循环了

----我怎能在别人的苦难面前转过脸去----
2011-06-22 12:59
my1127
Rank: 1
等 级:新手上路
帖 子:17
专家分:0
注 册:2011-6-5
收藏
得分:0 
恩,理解你的意思了,但是能不能帮我写一段判断的代码啊,十分感谢啊!
2011-06-22 13:09
dzt0001
Rank: 13Rank: 13Rank: 13Rank: 13
等 级:蒙面侠
威 望:5
帖 子:1281
专家分:4998
注 册:2005-10-12
收藏
得分:0 
前面有地方写错了是,应该是ubound(mc)=-1,mc(i)下标越界
程序代码:
'===========================================================
set rs=server.createobject("adodb.recordset")

if instr(request.Form("id"),",")>0 then

    id=split(trim(request.Form("id")),",")
    mc=split(trim(request.Form("mc")),",")
   
    for i=0 to ubound(id)
    conn.execute ("update kehu set mc='"&trim(mc(i))&"' where id="&id(i)&"")
    next

else

    id=trim(request.Form("id"))
    mc=trim(request.Form("mc"))

    conn.execute ("update kehu set mc='"&mc&"' where id="&id&"")

end if

'=================================================================

----我怎能在别人的苦难面前转过脸去----
2011-06-22 14:48
my1127
Rank: 1
等 级:新手上路
帖 子:17
专家分:0
注 册:2011-6-5
收藏
得分:0 
真是非常感谢,又学习了,完成!
2011-06-22 17:17
快速回复:ASP批量修改数据库记录发现一个奇怪的问题,高手进来帮忙解答一下,谢 ...
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.064643 second(s), 10 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved