ASP应用中数据库记录的选取与过滤

数据|数据库

一、说明
大多数最终用户都要求他们的Web方案能够提供某种报表能力。使用HTML和ASP,可以很容易地提供在表格中列出记录以及逐条浏览它们的能力。但用户往往要求能够通过下拉列表框(或其它选择方式)选择某一类别的记录,或者说,他们希望能够使用某种“查询界面”来建立和执行查询,而不必直接使用SQL。本文演示运用ASP技术建立可选择的记录过滤界面的一种方法。虽然这里讨论的解决方法相当简单,但使用类似的技术可以在任何Web页面提供复杂的查询能力。
在为任何一个解决方法编码之前,都应该充分理解并记录最终用户的需求。对于本例来说,用户要求能够用指定类别名字的方法获取指定表的一组记录,他既可以选择所有的类别也可以选择某个特定的类别。为实现这个功能,我们使用一个“递归的”ASP页面,它所提供的选择表单中包含了来自数据库的类别列表,根据表单所发送的数据提取结果记录集,结果记录将以表格的形式显示以方便用户察看。

二、构造过滤条件
对于这种数据库应用,首先应该了解所涉及的数据库表结构以及连接数据库系统所必须的连接参数。连接参数的指定方法在Microsoft的ASP联机文档中有很详细的说明,本文不再赘述。本例要用到的两个表为:Document_Category,它包含供用户选择的唯一的类别名字Category_Name;Documents,它包含对应于类别名字的其它数据,字段包括Category_Name、File_Name、Comments、Date_Submitted等。
选择表单中的类别列表来自于类别表Document_Category的Category_Name字段,构造类别下拉列表框的代码如下,请注意这里要用到VBScript ADO包含文件:

 <!-- #Include file = "ADOVBS.INC" -->
 <%
 ConnString = "DSN=LocalUpload;"
 Set conn = Server.CreateObject("ADODB.Connection")
 conn.Open ConnString,,,adOpenForwardOnly
 Set rs = SERVER.CreateObject("ADODB.Recordset")
 ' 首先获取用来填充下拉列表框的类别记录
 ' 设置SQL语句
 strSQL = "SELECT * FROM Document_Category ORDER BY category_name"
 
 rs.Open strSQL,conn, adOpenStatic
 %>
 
 <FORM name="formCategory">
 
 <SELECT NAME="qryCategory"
>
 <OPTION selected>请选择一个类别:
 <% Do While Not rs.EOF
  Response.Write ("<OPTION value='" & rs("Category_Name") & "'>" _
& rs("Category_Name"))
  rs.MoveNext
 Loop
 rs.Close
 Set rs=Nothing
 %>
 </OPTION>
 </SELECT><BR>
 </FORM>

SELECT标记中的OnChange用来提交HTML表单。当下拉列表框的值改变,JavaScript函数getFilter就会执行。使用类似的方法,可以将数据库表的记录用多个不同表单元素来描述(如第二个下拉列表框,单选按钮或复选框等等)。用户所选择的类别值将用来构造从数据库提取记录的SQL SELECT语句。

三、提交表单
这里我们要用到两个JavaScript函数来完成表单信息提交任务。getFilter函数用来将用户选择的类别值提交给页面本身,而getListValue函数则用来获取用户所选择的类别值。选用JavaScript实现这两个函数使得脚本能够在不同的浏览器上运行:
 <SCRIPT language="JavaScript">
 function getFilter(listitem){
  var object = "";
  var listValue = getListValue(listitem);
  document.formCategory.submit(listValue);
 }
 function getListValue(list){
  var listValue="";
  if (list.selectedIndex != -1) {
  listValue = list.options[list.selectedIndex].value;
  }
  return (listValue);
 }
 </SCRIPT>

四、显示结果
   最后要做的就是构造查询并显示查询结果了。首先,查询的构造依赖于用户在下拉列表框中所选择的类别名字,这个查询只需一个简单的SQL SELECT语句,在WHERE子句中指定用户所选择的类别即可。构造好查询之后就可以执行它了,如果没有符合要求的记录,则向用户显示一个提示信息;否则就显示这些记录。下面是完成上述任务的VBSCript代码:
 <%
 If Request.QueryString("qryCategory") = "" Then
  Response.Write("请从列表中选择一个类别.")
 Else
  ' 构造查询
  Set rs = SERVER.CreateObject("ADODB.Recordset")
  ' 设置SQL语句
  strSQL = "SELECT Documents.File_Name, Documents.Comments,"
strSQL = strSQL & "Documents.Date_Submitted "
  strSQL = strSQL & "FROM Documents "
  strSQL = strSQL & "WHERE ((Documents.Category_Name) = '" _&
Request.QueryString("qryCategory") & "')"
 
  ' 打开Recordset对象
  rs.Open strSQL,conn,adOpenStatic
 
  If rs.RecordCount = 0 Then
  Response.Write("没有发现指定类别的记录" _ &
Request.QueryString("qryCategory"))
  Else
  Response.Write("<H3>给定类别含以下记录: " _ &
Request.QueryString("qryCategory") & "</H3>")
 
  ' 在表格中显示查询结果
  Response.Write("<TABLE CELLSPACING=2 COLS=3 WIDTH=500>")
  Response.Write("<TR>")
  Response.Write("<TD ALIGN=CENTER VALIGN=TOP WIDTH=20%")
  Response.Write(" BGCOLOR=#C8C8FF><B>名称</B></TD>")
  Response.Write("<TD ALIGN=CENTER VALIGN=TOP WIDTH=65% ")
  Response.Write("BGCOLOR=#C8C8FF><B>说明</B></TD>")
  Response.Write("<TD ALIGN=CENTER VALIGN=TOP WIDTH=15% ")
  Response.Write("BGCOLOR=#C8C8FF><B>日期</B></TD>")
  Response.Write("</TR>")
 
  Do While Not rs.EOF
  Response.Write("<TR>")
  Response.Write("<TD>" & rs("File_Name") & "</TD>")
  Response.Write("<TD>" & rs("Comments") & "</TD>")
  Response.Write("<TD>" & rs("Date_Submitted") & "</TD>")
  Response.Write("</TR>")
  rs.MoveNext
  Loop
  rs.Close
  Response.Write("</TABLE>")
  End If
 
 End If
 Set rs=Nothing
 conn.Close
 Set conn=Nothing
 %>

   虽然本例中我们只用到了一个简单的带WHERE子句的SQL SELECT,但用类似的方法可以构造出复杂的界面和查询,只要相应地增加用来指定条件的表单元素以及根据用户选择结果构造合适SQL语句的脚本即可。

五、小结
ASP技术为最终用户所要求的不同数据查询界面提供了一个可伸缩的开发环境。综合地运用脚本与HTML可以为察看和阐释数据构造出灵活的界面,这些工具为按照用户需求过滤数据提供了一个简单但高效的方法。

时间: 2024-10-26 15:36:39

ASP应用中数据库记录的选取与过滤的相关文章

ASP中数据库记录的选取与过滤

数据|数据库 一.说明 大多数最终用户都要求他们的Web方案能够提供某种报表能力.使用HTML和ASP,可以很容易地提供在表格中列出记录以及逐条浏览它们的能力.但用户往往要求能够通过下拉列表框(或其它选择方式)选择某一类别的记录,或者说,他们希望能够使用某种"查询界面"来建立和执行查询,而不必直接使用SQL.本文演示运用ASP技术建立可选择的记录过滤界面的一种方法.虽然这里讨论的解决方法相当简单,但使用类似的技术可以在任何Web页面提供复杂的查询能力. 在为任何一个解决方法编码之前,都

浅谈ASP程序设计中数据库文件调用的捷径

程序|设计|数据|数据库 引言 本文针对ASP程序设计中最基础.也是最关键的部分"数据库文件的调用"进行说明,同时谈谈ASP程序设计中数据库文件调用的一些技巧. ASP简介 ASP(Active Server Pages)是微软于1996年推出的Web应用程序开发技术,它是一种脚本语言.ActiveX组件及HTML语言等的综合,微软把它描述为"一个服务器的脚本环境,在这里可以生成和运行动态的.交互的.高性能的Web服务器应用程序".其主要功能是为生成动态的.交互式的

ASP开发中数据库文件调用

数据|数据库 引言    本文针对ASP程序设计中最基础.也是最关键的部分"数据库文件的调用"进行说明,同时谈谈ASP程序设计中数据库文件调用的一些技巧.    ASP简介    ASP(Active Server Pages)是微软于1996年推出的Web应用程序开发技术,它是一种脚本语言.ActiveX组件及HTML语言等的综合,微软把它描述为"一个服务器的脚本环境,在这里可以生成和运行动态的.交互的.高性能的Web服务器应用程序".其主要功能是为生成动态的.交

ASP开发中数据库文件调用(1)

数据|数据库 引言 本文针对ASP程序设计中最基础.也是最关键的部分"数据库文件的调用"进行说明,同时谈谈ASP程序设计中数据库文件调用的一些技巧. ASP简介 ASP(Active Server Pages)是微软于1996年推出的Web应用程序开发技术,它是一种脚本语言.ActiveX组件及HTML语言等的综合,微软把它描述为"一个服务器的脚本环境,在这里可以生成和运行动态的.交互的.高性能的Web服务器应用程序".其主要功能是为生成动态的.交互式的Web服务器

ASP开发中数据库文件调用的捷径

数据|数据库 引言 本文针对ASP程序设计中最基础.也是最关键的部分"数据库文件的调用"进行说明,同时谈谈ASP程序设计中数据库文件调用的一些技巧. ASP简介 ASP(Active Server Pages)是微软于1996年推出的Web应用程序开发技术,它是一种脚本语言.ActiveX组件及HTML语言等的综合,微软把它描述为"一个服务器的脚本环境,在这里可以生成和运行动态的.交互的.高性能的Web服务器应用程序".其主要功能是为生成动态的.交互式的Web服务器

ASP开发中数据库文件调用的捷径_应用技巧

引言  本文针对ASP程序设计中最基础.也是最关键的部分"数据库文件的调用"进行说明,同时谈谈ASP程序设计中数据库文件调用的一些技巧.  ASP简介 ASP(Active Server Pages)是微软于1996年推出的Web应用程序开发技术,它是一种脚本语言.ActiveX组件及HTML语言等的综合,微软把它描述为"一个服务器的脚本环境,在这里可以生成和运行动态的.交互的.高性能的Web服务器应用程序".其主要功能是为生成动态的.交互式的Web服务器应用程序提

ASP.NET中数据库的操作初步----增加、删除、修改

asp.net|数据|数据库 注意:本文暂时不讲解数据库的数据调出和显示,因为他涉及的东西比较多,所以我们将另外详细讲解.本文主要要讲的是数据库的增加.删除.修改. 一.定义OleDbCommand类型变量:MyCommand 要对数据库进行增加.删除.修改的操作我们还需要根据MyConnectio的类型定义一个OleDbCommand或者SqlCommand对象(请注意如果MyConnection是OleDbConnection类型,那么只能用OleDbCommand:如果MyConnecti

ASP开发中数据库文件调用(3)

数据|数据库 上述代码中函数名称为:GetSQLRecordset,文件名为ADOSQLFunctions.asp. 现在,利用该文件就可以调用任何Access数据库的连接,同时对表记录进行筛选的操作.以Friend.mdb文件为例,列出表data中所有的记录,程序代码如下: <HTML><BODY><!--#include file="adovbs.inc"--><!--#include file="ADOSQLFunctions.

asp.net把数据库记录导入成excel文件

asp教程.net把数据库教程记录导入成excel文件 这是一个简单的导入excel文件代码,利用exprot.aspx导出指定数据库中的记录成xls文件哦. protected void button2_click(object sender, eventargs e)   {   response.redirect("export.aspx?search=" + txtsearch.text);   }  %> export.aspx 获取一个datatable, 在前台的d