从某个页面表单中取出信息是ASP编程中常见的问题。但是,遍历通过表单传递的记录会花去多长时间呢?这取决于数据库的大小。简单的GUI界面都可能令循环遍历操作耗费太多的时间。
比方说,假设有个团队成员登录到GUI屏幕输入自己的名字姓氏和名字之间用点号连接:amy.cowen。这个值通过表单提交,她的当前项目列表就从数据库中取了出来并显示在屏幕上。为了快速地取出用户的记录以便显示在屏幕上,你可以编写以下代码。
假设HTML页面上包含以下代码:
<FORM ACTION="login_post.asp" METHOD="POST">
<INPUT TYPE="text"
NAME="dotname">
<INPUT TYPE="submit">
</FORM>
在你的login_post.asp 代码页上你希望读取dotname 字段的值,同时找出数据库内匹配的记录:
SQL = "SELECT dotname, ID FROM team WHERE dotname
= '" & Request.Form("dotname") & "'"
假如你采用GET 方法,需要把数据库记录同QueryString中的字段值做比较,那么你可以采用同样的基本方法:
SQL = "SELECT dotname, ID FROM team WHERE dotname
= '" & Request.QueryString("dotname") & "'"
当然,你还可以把表单字段的值分配给某个变量并把它插入到你的SQL语句中:
dotname = Request.QueryString("dotname")
SQL = "SELECT dotname, ID FROM team WHERE dotname = '" & dotname
&"'"
假如页面上有很多条记录,很多情况下,对这些信息按照字母表降序排序会比传统的升序排序显示效率更高。采用你熟悉的ORDER BY 子句,你可以很容易地在页面上增加这一功能,让用户控制其记录显示的视图。
假设你有个页面的名字叫customers.asp ,页面执行会从Customers表内选取全部记录并按照字母表顺序对客户姓氏排序。先前我们已经看到过排序的代码了,为了实现反向排序,你只需要在ORDER
BY 表达式之后加上desc 即可:
SQL = "SELECT c_lastname, c_firstname, c_email
FROM Customers ORDER BY c_lastnamedesc"
要在静态模式下这也不赖。但是,也许你想修改以上代码使之提供新的GUI功能:
<A HREF="customers.asp ">Sort Ascending</A>
| <A HREF="customers.asp?sort=desc">Sort Descending</A>
<P>
<%
SQL = "SELECT c_lastname, c_firstname, c_email FROM Customers ORDER BY
c_lastname " & sort & " "
set objRec = objConn.Execute(SQL)
While Not objRec.EOF
Response.WriteobjRec("c_lastname") & ", " & objRec("c_firstname")
& "
" & objRec("c_email") & "<P>"
objRec.MoveNext
Wend
%>
以上代码最开头的链接允许用户修改页面的视图。你可以重载同一页面来查看这些信息,但是,在Sort Descending链接的情况下,页面会给sort
变量赋值。然后,在SQL语句内就没有指定desc而是采用 sort 变量的值。
下面要做的就是读取页面顶部sort 的值。
<%
sort = Request.Querystring("sort")
%>
以上代码从URL中检出sort的可用值。
并没有令你费太多的功夫,你还可以调整同一页面允许用户对特定的列排序。简单的SELECT 菜单表单控件列出SORT BY
选项可能是一个更方便的措施。