【例15.7】编程实现下图15.14及15.15所示的结果:在浏览器上显示Demo数据库users表中的所有记录,选择要修改的记录,修改该记录。(基础模块2.4”修改记录”)
图15.14 选择要修改的记录
图15.15 修改记录
“修改记录”模块由两段程序代码组成(sele_modi_record.htm与modify_record.asp)组成。Sele_modi_record.htm是选择要修改的记录,modify_record.asp是修改选定的记录。
Sele_modi_record.htm程序流程如下图15.16所示:
图 15.16 Sele_modi_record.htm程序流程图从程序流程图中可以看出,程序段“建立一个到数据源的连结”“建立记录集,存放查询结果”与【例15.4】的模块中这两个程序段相同.只要检查修改相应的参数,就可直接引用这两个程序段。
<sele_modi_record.htm 源程序>:
<% Option Explicit %>
<%
'建立一个到数据源的连接
Dim strDSN
Dim connDemo
strDSN="Provider=MSDASQL;DRIVER={SQL Server};SERVER=127.0.0.1;DATABASE=Demo;UID=chen;PWD=123"
Set connDemo = Server.CreateObject("ADODB.Connection")
connDemo.Open strDSN
'建立记录集,存放查询结果
Dim rsUsers
Dim strSqlSelectUsers
Set rsUsers = Server.CreateObject("ADODB.Recordset")
strSqlSelectUsers="SELECT * FROM users"
rsUsers.Open strSqlSelectUsers,connDemo,3,3
%>
<!--结果输出,以供选择-->
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>基础模块“修改记录”之“选择要修改的记录”</title>
</head>
<body bgcolor="#C0C0C0">
<p>
<font face="华文行楷" size="6">选择要修改的记录</font></h1>
</p>
<h3>请选择要修改的记录:</h3>
<%
If Not rsUsers.Eof Then
%>
<table border="1" cellpadding="8" cellspacing="0" width="383">
<tr>
<th width="115" >,</th>
<th width="120" >记录号</th>
<th width="120" >姓名</th>
<th width="56">* </th>
</tr>
<%
Do While Not rsUsers.Eof
%>
<tr>
<th width="115" > </th>
<td width="120"><% =rsUsers("id") %></td>
<td width="120"><% =rsUsers("username") %></td>
<td width="56">
<a href="modify_record.asp?id=<% =rsUsers("id") %>"><img src="images/edit1.gif" width="16" height="15" border="0"></a>
</td>
<%
rsUsers.MoveNext
Loop
End If
%>
</table>
</body>
</html>
modify_record.asp程序流程如下图15.17所示:
图 15.17 modify_record.asp程序流程图
<modify_record.asp源程序>
<% Option Explicit %>
<%
'接受从表单读出输入的数据
Dim id
Dim save
id=Request.QueryString("id")
save=Request.Form("btnSave")
'判断本页面的"保存"按钮是否被点击
If save="保存" Then
'建立一个到数据源的连接
Dim strDSN
Dim connDemo
strDSN="Provider=MSDASQL;DRIVER={SQL Server};SERVER=127.0.0.1;DATABASE=Demo;UID=chen;PWD=123"
Set connDemo = Server.CreateObject("ADODB.Connection")
connDemo.Open strDSN
'建立记录集,存放查询结果
Dim rsUsers
Dim strSqlSelectUsers
Set rsUsers = Server.CreateObject("ADODB.Recordset")
strSqlSelectUsers="SELECT * FROM users WHERE username='" & Request.Form("txtUserName") & "'"
rsUsers.Open strSqlSelectUsers,connDemo,1,3
'接受表单输入数据,写入数据库
rsUsers("username")=Request.Form("txtUserName")
rsUsers("phone")=Request.Form("txtPhone")
rsUsers("email")=Request.Form("txtEmail")
rsUsers("resume")=Request.Form("txtResume")
rsUsers.Update
rsUsers.Close
Set rsUsers=Nothing
'显示执行结果
Dim msg
msg="编辑成功!\n"
Response.Write("<script>alert('" & msg & "');history.go(-1)</script>")
Response.End
Else
'建立一个到数据源的连接
strDSN="Provider=MSDASQL;DRIVER={SQL Server};SERVER=127.0.0.1;DATABASE=Demo;UID=chen;PWD=123"
Set connDemo = Server.CreateObject("ADODB.Connection")
connDemo.Open strDSN
'建立记录集,存放查询结果
Set rsUsers = Server.CreateObject("ADODB.Recordset")
strSqlSelectUsers="SELECT * FROM users WHERE id=" & id & ""
rsUsers.Open strSqlSelectUsers,connDemo,3,3
End If
%>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>基础模块“修改记录”之“修改记录”</title>
</head>
<body bgcolor="#C0C0C0">
<p>
<font face="华文行楷" size="6">修改记录</font></h1>
</p>
<h3>请修改记录数据:</h3>
<!--表单与记录集的连接-->
<form method="POST" action="modify_record.asp ">
<p>
姓名: <input type="text" name="txtUserName" size="20" readonly="True" value="<% =rsUsers("username") %>">
</p>
<p>
电话: <input type="text" name="txtPhone" size="20" value="<% =rsUsers("phone") %>">
</p>
<p>
电子邮箱:<input type="text" name="txtEmail" size="20" value="<% =rsUsers("email") %>">
</p>
<p>
个人简历:<textarea rows="2" name="txtResume" cols="20"><% =rsUsers("resume") %></textarea>
</p>
<p>
<input type="submit" value="保存" name="btnSave"><input type="reset" value="全部重填">
</p>
</form>
</body>
</html>
图15.14 选择要修改的记录
图15.15 修改记录
“修改记录”模块由两段程序代码组成(sele_modi_record.htm与modify_record.asp)组成。Sele_modi_record.htm是选择要修改的记录,modify_record.asp是修改选定的记录。
Sele_modi_record.htm程序流程如下图15.16所示:
图 15.16 Sele_modi_record.htm程序流程图从程序流程图中可以看出,程序段“建立一个到数据源的连结”“建立记录集,存放查询结果”与【例15.4】的模块中这两个程序段相同.只要检查修改相应的参数,就可直接引用这两个程序段。
<sele_modi_record.htm 源程序>:
<% Option Explicit %>
<%
'建立一个到数据源的连接
Dim strDSN
Dim connDemo
strDSN="Provider=MSDASQL;DRIVER={SQL Server};SERVER=127.0.0.1;DATABASE=Demo;UID=chen;PWD=123"
Set connDemo = Server.CreateObject("ADODB.Connection")
connDemo.Open strDSN
'建立记录集,存放查询结果
Dim rsUsers
Dim strSqlSelectUsers
Set rsUsers = Server.CreateObject("ADODB.Recordset")
strSqlSelectUsers="SELECT * FROM users"
rsUsers.Open strSqlSelectUsers,connDemo,3,3
%>
<!--结果输出,以供选择-->
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>基础模块“修改记录”之“选择要修改的记录”</title>
</head>
<body bgcolor="#C0C0C0">
<p>
<font face="华文行楷" size="6">选择要修改的记录</font></h1>
</p>
<h3>请选择要修改的记录:</h3>
<%
If Not rsUsers.Eof Then
%>
<table border="1" cellpadding="8" cellspacing="0" width="383">
<tr>
<th width="115" >,</th>
<th width="120" >记录号</th>
<th width="120" >姓名</th>
<th width="56">* </th>
</tr>
<%
Do While Not rsUsers.Eof
%>
<tr>
<th width="115" > </th>
<td width="120"><% =rsUsers("id") %></td>
<td width="120"><% =rsUsers("username") %></td>
<td width="56">
<a href="modify_record.asp?id=<% =rsUsers("id") %>"><img src="images/edit1.gif" width="16" height="15" border="0"></a>
</td>
<%
rsUsers.MoveNext
Loop
End If
%>
</table>
</body>
</html>
modify_record.asp程序流程如下图15.17所示:
图 15.17 modify_record.asp程序流程图
<modify_record.asp源程序>
<% Option Explicit %>
<%
'接受从表单读出输入的数据
Dim id
Dim save
id=Request.QueryString("id")
save=Request.Form("btnSave")
'判断本页面的"保存"按钮是否被点击
If save="保存" Then
'建立一个到数据源的连接
Dim strDSN
Dim connDemo
strDSN="Provider=MSDASQL;DRIVER={SQL Server};SERVER=127.0.0.1;DATABASE=Demo;UID=chen;PWD=123"
Set connDemo = Server.CreateObject("ADODB.Connection")
connDemo.Open strDSN
'建立记录集,存放查询结果
Dim rsUsers
Dim strSqlSelectUsers
Set rsUsers = Server.CreateObject("ADODB.Recordset")
strSqlSelectUsers="SELECT * FROM users WHERE username='" & Request.Form("txtUserName") & "'"
rsUsers.Open strSqlSelectUsers,connDemo,1,3
'接受表单输入数据,写入数据库
rsUsers("username")=Request.Form("txtUserName")
rsUsers("phone")=Request.Form("txtPhone")
rsUsers("email")=Request.Form("txtEmail")
rsUsers("resume")=Request.Form("txtResume")
rsUsers.Update
rsUsers.Close
Set rsUsers=Nothing
'显示执行结果
Dim msg
msg="编辑成功!\n"
Response.Write("<script>alert('" & msg & "');history.go(-1)</script>")
Response.End
Else
'建立一个到数据源的连接
strDSN="Provider=MSDASQL;DRIVER={SQL Server};SERVER=127.0.0.1;DATABASE=Demo;UID=chen;PWD=123"
Set connDemo = Server.CreateObject("ADODB.Connection")
connDemo.Open strDSN
'建立记录集,存放查询结果
Set rsUsers = Server.CreateObject("ADODB.Recordset")
strSqlSelectUsers="SELECT * FROM users WHERE id=" & id & ""
rsUsers.Open strSqlSelectUsers,connDemo,3,3
End If
%>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>基础模块“修改记录”之“修改记录”</title>
</head>
<body bgcolor="#C0C0C0">
<p>
<font face="华文行楷" size="6">修改记录</font></h1>
</p>
<h3>请修改记录数据:</h3>
<!--表单与记录集的连接-->
<form method="POST" action="modify_record.asp ">
<p>
姓名: <input type="text" name="txtUserName" size="20" readonly="True" value="<% =rsUsers("username") %>">
</p>
<p>
电话: <input type="text" name="txtPhone" size="20" value="<% =rsUsers("phone") %>">
</p>
<p>
电子邮箱:<input type="text" name="txtEmail" size="20" value="<% =rsUsers("email") %>">
</p>
<p>
个人简历:<textarea rows="2" name="txtResume" cols="20"><% =rsUsers("resume") %></textarea>
</p>
<p>
<input type="submit" value="保存" name="btnSave"><input type="reset" value="全部重填">
</p>
</form>
</body>
</html>