仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 696|回复: 7
打印 上一主题 下一主题

[学习教程] ASP网页设计ASP项目中的通用前提查询模块

[复制链接]
若天明 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-16 22:30:21 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
由于ASP提供的是一对多的服务,所以用户的一些特殊需求很难得到满足。1、提出成绩:
在年夜型的ASP项目中,都触及到了前提查询这一功效。用户请求可以针对特定的字段举行查询。关于有些数据,是从多个表掏出来的,因而也要能对多个表举行查询。
一样平常的话,年夜多半的做法就是每一个程序都做一个查询功效,由于每一个查询的表都分歧,触及的字段也分歧。可是,假如在年夜型的ASP项目中这么做的话,不但增添了事情量、影响开辟进度,并且不克不及使体系模块化、代码复用,增添了体系保护难度。因而,我们有需要使前提查询模块化。

2、办理思绪:
我们计划前提查询的功效为:
1、选择查询字段(字段);
2、选择查询前提(<、>、=、<=、>=、、Null、NotNull、Like);
3、输出前提值;
4、选择运算干系(Or、And);
5、将查询前提增加到列表框、或从列表框删除。
具体界面请看下图:


我们以旧事表(dbNews)为例,假定旧事表包括有题目、工夫、内容、公布人。
在查询数据库时,我们一样平常都是用如:
“Select*fromNewsWheretime=2002-05-22andUser=Tom”,我们假如能在前提查询中前往“time=2002-05-22andUser=Tom”的前提字符串,成绩就办理了。但假如是分歧的程序、分歧的表怎样做呢?这就是看用甚么办法来界说查询的字段了。
在这里,我们把查询字段作为一个历程写在程序中,在查询模块中挪用,如许,查询的字段就是静态的天生了。
用户选择好了一个查询字段,和婚配前提,将它增加到<select></select>框中,用户能够持续选择别的的查询前提,然后又把它增加到<select>中,完成了,就点查询按钮。用查询模块天生如:“time=2002-05-22andUser=Tom”的语句,如许在程序中就能够挪用了。

3、办理计划:
ASP通用前提查询模块的源代码请参看(4、源代码)。
1、界说历程
在挪用前提查询模块前,起首要在程序中界说一个SearchField()历程:
SubSearchField()
Response.Write"<optionValue=1Title>题目</option>"
Response.Write"<optionValue=1Time>工夫</option>"
Response.Write"<optionValue=1Content>内容</option>"
Response.Write"<optionValue=1User>公布人</option>"
EndSub
  个中,Value中为字段称号,假如字段为字符型,就在字段名前加1,数字型就加2。如:"1Title"。
注重:假如数据是从多个表中掏出来的,如:select*fromNews,User;那末Value的值就要加上响应的表,如:1News.Title。如许就能够从多个表查询数据。

  2、挪用前提查询模块:
  <!--#includefile="../Public/Condition_Search.asp"-->

3、到场按钮事务:
到场“前提查询”按钮,并增加事务:
<Inputtype="Button"name=ConSearch>

默许形态下,前提查询模块埋没在页面中,当点“前提查询”按钮,就显现出来,如许页面即美妙,也不会妨害用户扫瞄。

如许,我们就完成了“前提查询”模块的挪用
中选择好了查询前提,实行查询后,程序getSql文本框将前往查询前提,如:“title=Chiananduser=tom”,用request.form("getSql")获得!在把它到场到SQL语句中,一个新的查询就天生了。

4、ASP通用前提查询模块的源代码

<ScriptLANGUAGE=javaScript>
<!--
//埋没或显现前提查询模块
functionsearch_dis(ob){
if(ob.style.display=="none")
{ob.style.display="";window.location.href(#down);}
else
{ob.style.display="none";}
}

//把前提查询语句增加到<select>查询列表框;
functionAddSe(){
varval,val_tmp,Sql,oAdd,TextType;
varField,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>查询列表框中删除;
functionmoveSe(){
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);
}
}
}

//获得查询前提,并提交;
functiongetVal(){
vargettxt,Setable;
gettxt="";
varpath=window.location.pathname;//获得页面链接和文件名
varline=path.lastIndexOf("/");//获得最初一个/的地位
vardot=path.indexOf(".");//获得第一个.的地位
varName=path.substring(line+1,dot);//获得文件名
varfileName=Name+".asp";
for(i=1;i<frm_Search.seSql.options.length;i++){
gettxt=gettxt+""+frm_Search.seSql.options[i].value;}
varvalLeng=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>
<aName="down"></a>
<FormName="frm_Search"method="post"action="">
<inputtype="hidden"Name=getSqlValue="">
<tablebgcolor=#6699CCwidth=100%>
<tr><td>
<tablewidth="617"border="0"cellspacing="1"cellpAdding="2"bgcolor="#CCCCCC"

align="center">
<tbodyid=s1style=display:none>
<tr>
<tdwidth="134"height="25"bgcolor="#006699">
<divalign="right"><fontcolor="#FFFFFF"style="font-size:10pt">查询字段:

</font></div>
</td>
<tdwidth="159"bgcolor="#F2F2F2">
<selectName="Field"style="font-size:12px"><%CallSearchField()%></select>
</td>
<tdwidth="102"bgcolor="#E1E1E1">
<divalign="center">
<inputtype="button"Name="AddSql"Value="增加>>>"

style="BACKGROUND:#ffdead;BORDER-BOTTOM:#665b8e1pxsolid;BORDER-LEFT:#ffffff1px

solid;BORDER-RIGHT:#665b8e1pxsolid;BORDER-TOP:#ffffff1pxsolid;COLOR:#333333;CURSOR:

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

1px;PAddING-TOP:1px">
</div>
</td>
<tdrowspan="4"bgcolor="#F2F2F2"width="221">
<selectid="seSql"size="6">
<optionValue="">------------查询前提-----------</option>
</select>
</td>
</tr>
<tr>
<tdwidth="134"height="25"bgcolor="#006699">
<divalign="right"><fontcolor="#FFFFFF"style="font-size:10pt">查询前提:

</font></div>
</td>
<tdwidth="159"bgcolor="#F2F2F2">
<selectName="Condition"style="font-size:12px">
<optionValue="=">等于</option>
<optionValue=">">年夜于</option>
<optionValue=">=">年夜于即是</option>
<optionValue="<">小于</option>
<optionValue="<=">小于即是</option>
<optionValue="">不即是</option>
<optionValue="NULL">为空</option>
<optionValue="NOTNULL">不为空</option>
<optionValue="LIKE">婚配</option>
</select>
</td>
<tdwidth="102"bgcolor="#E1E1E1">
<divalign="center">
<inputtype="button"Name="delSql"Value="<<<删除"

style="BACKGROUND:#ffdead;BORDER-BOTTOM:#665b8e1pxsolid;BORDER-LEFT:#ffffff1px

solid;BORDER-RIGHT:#665b8e1pxsolid;BORDER-TOP:#ffffff1pxsolid;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>
<tdwidth="134"height="25"bgcolor="#006699">
<divalign="right"><fontcolor="#FFFFFF"style="font-size:10pt">条件值:

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

BOTTOM:#0000001pxsolid;BORDER-LEFT:#0000001pxsolid;BORDER-RIGHT:#0000001pxsolid;BORDER-

TOP:#0000001pxsolid;FONT-SIZE:9pt">
</td>
<tdwidth="102"bgcolor="#E1E1E1"></td>
</tr>
<tr>
<tdwidth="134"height="25"bgcolor="#006699">
<divalign="right"><fontcolor="#FFFFFF"style="font-size:10pt">干系运算符:

</font></div>
</td>
<tdwidth="159"bgcolor="#F2F2F2">
<selectName="Relation"style="font-size:12px">
<optionValue="and">而且</option>
<optionValue="or">大概</option>
</select>
</td>
<tdwidth="102"bgcolor="#E1E1E1">
<divalign="center">
<inputtype="button"Name="search_ok"Value="查询"

style="BACKGROUND:#deb887;BORDER-BOTTOM:#665b8e1pxsolid;BORDER-LEFT:#ffffff1px

solid;BORDER-RIGHT:#665b8e1pxsolid;BORDER-TOP:#ffffff1pxsolid;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>
减少客户内IT专业人才缺乏带来的影响。ASP的客户员工利用浏览器进入相关的应用软件,简单易用,无需专业技术支持。
变相怪杰 该用户已被删除
沙发
发表于 2015-1-18 21:22:21 | 只看该作者
交流是必要的,不管是生活还是学习我们都要试着去交流,通过交流我们可以学到很多我们自己本身所没有的知识,可以分享别人的经验甚至经历。
分手快乐 该用户已被删除
板凳
发表于 2015-1-23 18:30:28 | 只看该作者
以上是语言本身的弱点,在功能方面ASP同样存在问题,第一是功能太弱,一些底层操作只能通过组件来完成,在这点上是远远比不上PHP/JSP,其次就是缺乏完善的纠错/调试功能,这点上ASP/PHP/JSP差不多。
山那边是海 该用户已被删除
地板
发表于 2015-1-31 19:04:28 | 只看该作者
Application:这个存储服务端的数据,如果不清除,会直到web应用程序结束才清除(例如重启站点)
若相依 该用户已被删除
5#
发表于 2015-2-6 21:16:13 | 只看该作者
那么,ASP.Net有哪些改进呢?
飘飘悠悠 该用户已被删除
6#
发表于 2015-2-18 19:34:11 | 只看该作者
弱类型造成潜在的出错可能:尽管弱数据类型的编程语言使用起来回方便一些,但相对于它所造成的出错几率是远远得不偿失的。
小妖女 该用户已被删除
7#
发表于 2015-3-6 09:24:36 | 只看该作者
接下来就不能纸上谈兵了,最好的方法其实是实践。实践,只能算是让你掌握语言特性用的。而提倡做实际的Project也不是太好,因为你还没有熟练的能力去综合各种技术,这样只能使你自己越来越迷糊。
小魔女 该用户已被删除
8#
发表于 2015-3-12 23:36:43 | 只看该作者
你可以通过继承已有的对象最大限度保护你以前的投资。并且C#和C++、Java一样提供了完善的调试/纠错体系。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-5-6 06:17

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表