ASP项目中的通用条件查询模块

2016-01-29 17:44 27 1 收藏

ASP项目中的通用条件查询模块,ASP项目中的通用条件查询模块

【 tulaoshi.com - ASP 】

  一、提出问题:
    在大型的ASP项目中,都涉及到了条件查询这一功能。用户要求能够针对特定的字段进行查询。对于有些数据,是从多个表取出来的,因此也要能对多个表进行查询。
    一般的话,大多数的做法就是每个程序都做一个查询功能,因为每个查询的表都不同,涉及的字段也不同。但是,如果在大型的ASP项目中这么做的话,不仅增加了工作量、影响开发进度,而且不能使系统模块化、代码复用,增加了系统维护难度。因此,我们有必要使条件查询模块化。

二、解决思路:
    我们设计条件查询的功能为:
    1、选择查询字段(字段);
    2、选择查询条件(<、、=、<=、=、<、Null、Not Null、Like );
    3、输入条件值;
    4、选择运算关系(Or、And);
    5、将查询条件添加到列表框、或从列表框删除。
    详细界面请看下图:


       我们以新闻表(dbNews)为例,假定新闻表包含有标题、时间、内容、发布人。
       在查询数据库时,我们一般都是用如:
      “Select * from News Where time='2002-05-22' and User='Tom'”,我们如果能在条件查询中返回“time='2002-05-22' and User='Tom'”的条件字符串,问题就解决了。但如果是不同的程序、不同的表怎么做呢?这就是看用什么方法来定义查询的字段了。   
       在这里,我们把查询字段作为一个过程写在程序中,在查询模块中调用,这样,查询的字段就是动态的生成了。
       用户选择好了一个查询字段,以及匹配条件,将它添加到<select</select框中,用户可以继续选择另外的查询条件,然后又把它添加到<select中,完成了,就点查询按钮。用查询模块生成如:“time='2002-05-22' and User='Tom'”的语句,这样在程序中就可以调用了。

三、解决方案:
    ASP通用条件查询模块的源代码请参看 (四、源代码)。
    1、定义过程
    在调用条件查询模块前,首先要在程序中定义一个SearchField()过程:
Sub SearchField()
    Response.Write "<option Value='1Title'标题</option"
    Response.Write "<option Value='1Time'时间</option"
    Response.Write "<option Value='1Content'内容</option"
    Response.Write "<option Value='1User'发布人</option"
End Sub
  其中,Value中为字段名称,如果字段为字符型,就在字段名前加1,数字型就加2。如:"1Title"。
       注意:如果数据是从多个表中取出来的,如:select * from News,User ;那么Value的值就要加上相应的表,如:1News.Title。这样就可以从多个表查询数据。

  2、调用条件查询模块:
  <!--#include file="../Public/Condition_Search.asp"--
       
       3、加入按钮事件:
       加入“条件查询”按钮,并添加  onClick="search_dis(s1)"事件:
       <Input type="Button" name=ConSearch onClick="search_dis(s1)"

       默认状态下,条件查询模块隐藏在页面中,当点“条件查询”按钮,就显示出来,这样页面即美观,也不会妨碍用户浏览。

    这样,我们就完成了“条件查询”模块的调用
    当选择好了查询条件,执行查询后,程序getSql文本框将返回查询条件,如:“title='Chian' and user='tom'”,用request.form("getSql")取得!在把它加入到SQL语句中,一个新的查询就生成了。

四、ASP通用条件查询模块的源代码
    
<Script LANGUAGE=javaScript
<!--
//隐藏或显示条件查询模块
function search_dis(ob){  
if (ob.style.display=="none")
    {ob.style.display="";window.location.href ('#down');}
else
  

来源:https://www.tulaoshi.com/n/20160129/1502759.html

延伸阅读
在使用 Microsoft Access 项目的窗体或数据表中的数据时,为了提高性能,可以设置从 SQL Server 数据库下载的最大记录数。 1.在“导航”模式中打开数据表或窗体。 2.执行下列操作之一: 从“记录”菜单中选择“最大记录数”。 单击导航按钮右侧的“最大记录数限制”。 3.在“设置最大记录数”对话框中,在文本框内键入最大记录数。键...
标签: Java JAVA基础
  /** ToUnicode.java */ package com.edgewww.util; import java.io.*; /** * 字符串转换成Unicode码的类 * @author 栾金奎 jsp@shanghai.com * @date 2001-03-05 */ public class ToUnicode { /** * 把字符串转换成Unicode码 * @param strText 待转换的字符串 * @param code 转换前字符串的编码,如"GBK" * @...
标签: Web开发
所有写程序的人都知道,当你逐渐对您要实现的功能展开的时候,很大的时候,第一天写的东西第二天就忘了写到那里了,很多的时候,不得不写上详细的程序开发笔记,这在ASP的系统开发中感觉尤其文件、函数复杂的时候,当我们打算对网站的一部分功能进行修改的时候,感觉无从下手或者感觉要修改的地方。这时候,如果您学过任何一门面向对象的编程的...
标签: ASP
  模块化分页 1.查询语句块 <% 取得当前文件名 temp = Split(request.ServerVariables("URL"), "/") fy = temp(UBound(temp)) set rs=server.createobject("adodb.recordset") if not isempty(request("page")) then   pagecount=cint(request("page"))   else   pagecount=1   end i...
标签: Web开发
一个可查询所有表的“通用”查询分页类最近突发奇想,希望写出一个可以针对所有表的查询分页类。因为在实际的开发中,恐怕查询并将结果集分页显示是用得最多的代码,而表的结构是多样的,我想尽可能地提高代码的重用率和维护性。 以下是我写的,请各位加以指点,测试,看能否进行更好的改进和更多的支持。 目前还只支持单一的表,不支持联...

经验教程

807

收藏

48
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部