|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
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的客户员工利用浏览器进入相关的应用软件,简单易用,无需专业技术支持。 |
|