动态网站制作指南 [  QQ表情  ]
[ 投票调查 ]
[ 企业邮箱 ]
[ 网站空间 ]
网络编程 | 站长之家 | 网页制作 | 图形图象 | 操作系统 | 冲浪宝典 | 软件教学 | 网络办公 | 邮件系统 | 网络安全 | 认证考试 | 系统进程
ASP源码 | .Net源码 | PHP源码 | JSP源码 | JAVA源码 | CGI源码 | VB源码 | C++源码 | Delphi源码 | PB源码 | VF源码 | 汇编 | 服务器
电脑书籍下载:程序设计书籍 | 数据库教程书籍 | 平面与多媒体书籍 | 网络通讯书籍 | 系统管理书籍 | 网络安全书籍 | 认证考试书籍
Firefox | IE | Maxthon | 迅雷 | 电驴 | BitComet | FlashGet | QQ | QQ空间 | Vista | 输入法 | Ghost | Word | Excel | wps | Powerpoint
asp | .net | php | jsp | Sql | c# | Ajax | xml | Dreamweaver | FrontPages | Javascript | css | photoshop | fireworks | Flash | Cad | Discuz!
当前位置 > 网站建设学院 > 网络编程 > ASP实例
Tag:注入,存储过程,分页,安全,优化,xmlhttp,fso,jmail,application,session,防盗链,stream,无组件,组件,md5,乱码,缓存,加密,验证码,算法,cookies,ubb,正则表达式,水印,索引,日志,压缩,base64,url重写,上传,控件,Web.config,JDBC,函数,内存,PDF,迁移,结构,破解,编译,配置,进程,分词,IIS,Apache,Tomcat,phpmyadmin,Gzip,触发器,socket
网络编程:ASP教程,ASP.NET教程,PHP教程,JSP教程,C#教程,数据库,XML教程,Ajax,Java,Perl,Shell,VB教程,Delphi,C/C++教程,软件工程,J2EE/J2ME,移动开发
文章搜索服务
邮件订阅
输入你的邮件地址,
你将不会错过任何关于:
[ ASP实例 ]的信息



本月文章推荐
.用asp怎样编写文档搜索页面(3).
.用Asp+XmlHttp实现RssReader功能.
.ASP环境下邮件列表功能的实现 (.
.利用ASP实现三个强大功能之二.
.用Agent+ASP技术制作语音聊天室.
.用ASP实现对MP3曲目信息的操作.
.ASP连接执行程序 .
.用ASP开发一个在线考试程序(五).
.功能非常全面的日期处理函数.
.显示sql数据库所有表的名称(带删.
.使用AspImage制作图形(一).
.ASP进阶之文章在线管理更新(8).
.一个功能完善的专栏管理的程序-&.
.全球IP地址查询完整版.
.bbs的数据结构和存储过程(一).
.ASP进阶之文章在线管理更新(9).
.bbs树形结构的实现方法(一).
.多个表单和多个图片一起上传完美.
.用ASP编写图片计数器.
.构建你的网站新闻自动发布系统之.

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

发表日期:2002-7-22 |


一、提出问题:
    在大型的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
    {ob.style.display="none";}
}

//把条件查询语句添加到<select>查询列表框;
function AddSe(){       
  var val,val_tmp,Sql,oAdd,TextType;
  var Field,Condition,TextVal,Relation;
  Field=frm_Search.Field.options[frm_Search.Field.selectedIndex].text;
  TextVal="'"+frm_Search.TextVal.value+"'" ;
  Condition=frm_Search.Condition.options[frm_Search.Condition.selectedIndex].text;
  Relation=frm_Search.Relation.options[frm_Search.Relation.selectedIndex].text;
  val_tmp = frm_Search.Field.value;
  val_tmp = val_tmp.substring(0,1);
  //判断字段的数据类型,如果为1,就是字符、日期型;为2,就是数值型;
  if (val_tmp==1)
     {TextType="'"+frm_Search.TextVal.value+"' " ;}
  else
     {TextType=""+frm_Search.TextVal.value+" " ;}
  val_Field = frm_Search.Field.value;
  val_Field = val_Field.substr(1);
  val= val_Field + frm_Search.Condition.value + TextType + frm_Search.Relation.value ;
  Sql = Field+Condition+TextVal+Relation;
  oAdd=document.createElement("option")
  oAdd.value=val;
  oAdd.text=Sql;
  frm_Search.seSql.add(oAdd);
}

//把条件查询语句从<select>查询列表框中删除;
function moveSe(){    
  for (i=1;i<frm_Search.seSql.options.length;i++){
     if(frm_Search.seSql.options[i].selected){
       frm_Search.seSql.remove(frm_Search.seSql.selectedIndex);
     }
  }
}

//取得查询条件,并提交;
function getVal(){    
var gettxt,Setable;
gettxt = "";
var path = window.location.pathname ;  //取得页面链接和文件名
var line = path.lastIndexOf("/");  //取得最后一个'/'的位置
var dot = path.indexOf(".");        //取得第一个'.'的位置
var Name = path.substring(line+1,dot);   //取得文件名
var fileName = Name + ".asp";
for (i=1;i<frm_Search.seSql.options.length;i++){
gettxt = gettxt+ " " + frm_Search.seSql.options[i].value  ;}
var valLeng=gettxt.lastIndexOf(" ");
gettxt=gettxt.substr(0,valLeng);      //去掉条件子句的最后一个关系运算符
Setable = frm_Search.Setable.value ;
//window.open (fileName+'?gettxt='+gettxt,'_self');   //向当前页面传送查询条件子句
frm_Search.getSql.value = gettxt;
frm_Search.action = fileName;
frm_Search.submit ();
}
//-->
</Script>
<a Name="down"></a>   
<Form Name="frm_Search" method="post" action="">
<input type="hidden" Name=getSql Value="">
<table bgcolor=#6699CC width=100%>
<tr><td>
        <table width="617" border="0" cellspacing="1" cellpAdding="2" bgcolor="#CCCCCC"

align="center">
          <tbody id=s1 style=display:none>
          <tr>
            <td width="134" height="25" bgcolor="#006699">
              <div align="right"><font color="#FFFFFF" style="font-size:10pt">查询字段:

</font></div>
            </td>
            <td width="159" bgcolor="#F2F2F2">
              <select Name="Field" style="font-size:12px"><%Call SearchField()%></select>
            </td>
            <td width="102" bgcolor="#E1E1E1">
              <div align="center">
                <input type="button" Name="AddSql" Value="添加&gt;&gt;&gt;" onClick="AddSe()"

style="BACKGROUND: #ffdead;BORDER-BOTTOM: #665b8e 1px solid;BORDER-LEFT: #ffffff 1px

solid;BORDER-RIGHT: #665b8e 1px solid;BORDER-TOP: #ffffff 1px solid;COLOR: #333333;CURSOR:

hand;FONT-SIZE: 12px;HEIGHT: 20px;PAddING-BOTTOM: 1px;PAddING-LEFT: 1px;PAddING-RIGHT:

1px;PAddING-TOP: 1px">
              </div>
            </td>
            <td rowspan="4" bgcolor="#F2F2F2" width="221">
              <select id="seSql" size="6">
                <option Value="">------------查询条件-----------</option>
              </select>
            </td>
          </tr>
          <tr>
            <td width="134" height="25" bgcolor="#006699">
              <div align="right"><font color="#FFFFFF" style="font-size:10pt">查询条件:

</font></div>
            </td>
            <td width="159" bgcolor="#F2F2F2">
              <select Name="Condition" style="font-size:12px">
                <option Value="=">等 于</option>
                <option Value="&gt;">大 于</option>
                <option Value="&gt;=">大于等于</option>
                <option Value="&lt;">小 于</option>
                <option Value="&lt;=">小于等于</option>
                <option Value="&lt;&gt;">不等于</option>
                <option Value=" NULL ">为空</option>
                <option Value=" NOT NULL ">不为空</option>
                <option Value=" LIKE ">匹配</option>
              </select>
            </td>
            <td width="102" bgcolor="#E1E1E1">
              <div align="center">
                <input type="button" Name="delSql" Value="&lt;&lt;&lt;删除" onClick="moveSe()"

style="BACKGROUND: #ffdead;BORDER-BOTTOM: #665b8e 1px solid;BORDER-LEFT: #ffffff 1px

solid;BORDER-RIGHT: #665b8e 1px solid;BORDER-TOP: #ffffff 1px solid;COLOR: #333333;CURSOR:

hand;FONT-SIZE: 12px;HEIGHT: 20px;PAddING-BOTTOM: 1px;PAddING-LEFT: 1px;PAddING-RIGHT:

1px;PAddING-TOP: 1px">
              </div>
            </td>
          </tr>
          <tr>
            <td width="134" height="25" bgcolor="#006699">
              <div align="right"><font color="#FFFFFF" style="font-size:10pt">条 件 值:

</font></div>
            </td>
            <td width="159" bgcolor="#F2F2F2">
              <input type="text" id="TextVal" size="15" style="BACKGROUND-COLOR: white; BORDER-

BOTTOM: #000000 1px solid;BORDER-LEFT: #000000 1px solid;BORDER-RIGHT: #000000 1px solid;BORDER-

TOP: #000000 1px solid;FONT-SIZE: 9pt">
            </td>
            <td width="102" bgcolor="#E1E1E1">&nbsp;</td>
          </tr>
          <tr>
            <td width="134" height="25" bgcolor="#006699">
              <div align="right"><font color="#FFFFFF" style="font-size:10pt">关系运算符:

</font></div>
            </td>
            <td width="159" bgcolor="#F2F2F2">
              <select Name="Relation" style="font-size:12px">
                <option Value="and">并且</option>
                <option Value="or">或者</option>
              </select>
            </td>
            <td width="102" bgcolor="#E1E1E1">
              <div align="center">
                <input type="button" Name="search_ok" Value="查   询" onClick="getVal()"

style="BACKGROUND: #deb887;BORDER-BOTTOM: #665b8e 1px solid;BORDER-LEFT: #ffffff 1px

solid;BORDER-RIGHT: #665b8e 1px solid;BORDER-TOP: #ffffff 1px solid;COLOR: #333333;CURSOR:

hand;FONT-SIZE: 12px;HEIGHT: 20px;PAddING-BOTTOM: 1px;PAddING-LEFT: 1px;PAddING-RIGHT:

1px;PAddING-TOP: 1px">
              </div>
            </td>
          </tr>
          </tbody>
        </table>
  </td></tr>
</table>
</Form>

上一篇:超长字符的智能分页-支持HTML  人气:11575
下一篇:一个为字符串中的网址加上链接的程序例子 人气:12378
浏览全部查询的内容 Dreamweaver插件下载 常用网页广告代码全集
  最新网站源码 最新软件下载
2008-7-8 ECShop v2.6.0 Build 20080707(G
2008-7-8 动网论坛PHP版 v2.0++ Build 080
2008-7-8 中国IT总舵 v9.0 UTF版
2008-7-8 凹丫丫新闻发布系统 v4.6 Build
2008-7-8 topview数据查询 v3.0
2008-7-8 Z-Blog v1.8 Spirit Build 80708
2008-7-8 Z-Blog v1.8 Spirit Build 80708
2008-7-8 凹丫丫新闻发布系统 v4.6 Build
2008-7-8 新动软万能网站内容管理cms系统
2008-7-5 AgileMessenger即时通讯工具 v1.
2008-7-5 GoodCalculator2.0版固件计算器
2008-7-5 RepoName源地址搜索工具 v1.21b
2008-7-5 AgileMessenger即时通讯工具 v1.
2008-7-5 TouchCopy多媒体管理软件 v3.13完
2008-7-5 VideosTone视频铃声 v1.1汉化破解
2008-7-5 TouchPad触摸板 v4.44破解版
2008-7-5 VideosTone破解补丁 v1.0
2008-7-5 Feeds GoogleReader客户端 v0.4.3


  发表评论
姓 名: 验证码:
内 容:
[ 汉字翻译拼音 ] [ 广告代码 ] [ 符号对照表 ] [ 进制转换 ] [ 经典小工具 ] [ 个税计算 ] [ 汉字简繁转换 ] [ 普通单位换算 ] [ 公制单位换算 ]
[ 生辰老黄历 ] [ 国内电话区号 ] [ 国家代码与域名缩写 ] [ 文字加密解密 ] [ 健康查询 ] [ 万年历 ] [ 手机号码查询 ] [ ip搜索 ] [ Google PR查询 ]
业务联系 | 广告刊登 | 频道合作 | 投稿荐稿 | 联系方式 | 加入收藏 | RSS订阅
Copyright © 2000-2008 www.knowsky.com All rights reserved | 网络实名:动态网站制作指南 | 沪ICP备05001343号
ホームページ制作 不動産検索システム 求人情報