首先不推荐使用SELECT
,最好是你要使用哪些字段,就列出那些字段
SELECT
FROM
表名
WHERE
所属部门=[选中的部门]
AND
设备类型
=
[选中的类型]
我想你SQL语句应该会写,这个地方难点在于,你检索的条件,不一定同时出现,有可能只出现一个,
即
SELECT
备编号,设备名称,设备类型,使用年限,所属部门
FROM
表名
WHERE
所属部门=[选中的部门]
或
SELECT
备编号,设备名称,设备类型,使用年限,所属部门
FROM
表名
WHERE
设备类型
=
[选中的类型]
还有最初的一条
这三条检索词句都可能出现这个也是开发时常遇到的动态SQL问题
在程序中,执行SQL语句的是API提供的方法,一般只要传一个字符串即可,
那我们就可以在字符串上做手脚
首先创建一个条件为真的SQL语句
String
strSQL
=
"SELECT
备编号,设备名称,设备类型,使用年限,所属部门
FROM
表名
WHERE
1=1
"
这条SQL执行的结果,与不加WHERE的结果是相同的,
这样做了以后,条再有变化就可以添加字符串"
AND
字段=表达式
"
这样的字符串,以达到运态SQL所要求的效果
以你的问题举例
if
部门选择了
strSQL
+=
"AND
所属部门=选中的部门
";
if
部门选择了
strSQL
+=
"AND
设备类型
=
选中的类型
";
这样,根据选择的不同可以得到三种SQL
SELECT
备编号,设备名称,设备类型,使用年限,所属部门
FROM
表名
WHERE
1=1
AND
所属部门=[选中的部门]
SELECT
备编号,设备名称,设备类型,使用年限,所属部门
FROM
表名
WHERE
1=1
AND
设备类型
=
[选中的类型]
SELECT
备编号,设备名称,设备类型,使用年限,所属部门
FROM
表名
WHERE
1=1
AND
所属部门=[选中的部门]
AND
设备类型
=
[选中的类型]
这样应该可以达到你想要的结果了
这个要注意的是,在你写的字符串后,都要加一个空格,
要不然拼出来的结果就是
SELECT
备编号,设备名称,设备类型,使用年限,所属部门
FROM
表名
WHERE
1=1AND
所属部门=[选中的部门]AND
设备类型
=
[选中的类型]
AND与前面的表达式挨在一起了,这样,这就不是一个合法的SQL语句,这点要注意
这也是在实际中常遇到的问题
就是那个页面是可以反复查询的,代码怎么编
对于这个问题很迷惑,你做完查询以后,不是回到这个页吗这个问题实再不知道你想问什么
表单提交后下拉列表的值又变成了原来的值,
这个是正常的,因为页面刷新后,页面上的控件如时不控制的话,都会变成初始状态
这个需要手动控制,
<select
name="sel">
<option
value="0">
</option>
<option
value="1">>部门1</option>
<option
value="2">>部门2</option>
<option
value="3">>部门3</option>
</select>
假如说你提交的是部门3,你得到了3这个值,那么在回到页面时,你要在option中加上selected这个标记,即
<select
name="sel">
<option
value="0">
</option>
<option
value="1">>部门1</option>
<option
value="2">>部门2</option>
<option
value="3"
selected>>部门3</option>
</select>
一船的做法是,记住提交的值
<select
name="sel">
<option
value="0">
</option>
<option
value="1"
<%
if(value==1){outprintln("selected");}%>>>部门1</option>
<option
value="2"
<%
if(value==2){outprintln("selected");}%>>>部门2</option>
<option
value="3"
<%
if(value==3){outprintln("selected");}%>
>>部门3</option>
</select>
以上是JSP代码,你可以参考一下,
这样页面刷新后,就可以保持住你选择的那个选项的状态了
<form action="">
<table width="160" border="0" cellspacing="0" cellpadding="0">
<tr align="center">
<td width="55" height="30">类 别:</td>
<td width="105"><select name="style">
<option selected value="all">全部信息</option>
<option value="company">企业名</option>
<option value="ways">通知方式</option>
<option value="lxr">联系人</option>
</select></td>
</tr>
<tr align="center">
<td height="30">关键字:</td>
<td><input name="txtitle" type="text" class="input" size="15" value="请输入关键字" onFocus=thisvalue='' style="font-size:9pt; color:#FF0000;background-color:#F7F7F7;border-left: 1px solid rgb(192,192,192); border-right: 1px solid rgb(192,192,192); border-top: 1px solid rgb(192,192,192); border-bottom: 1px solid rgb(192,192,192)"></td>
</tr>
<tr align="center">
<td height="30"> </td>
<td><input type="submit" name="Submit3" value="查 询"></td>
</tr>
</table>
</form>
<%if request("txtitle")<>"" then
txtitle=request("txtitle") '搜索关键字内容
end if
if request("style")<>"" then
style=request("style")'搜索类别
end if
set rs=serverCreateObject("adodbrecordset")
if style="all" then'搜索所有的
sql="select from news where company like '%"&txtitle&"%' or ways like '%"&txtitle&"%' or lxr like '%"&txtitle&"%' order by id desc"
elseif style="company" then'按公司名
sql="select from news where title like '%"&txtitle&"%' order by id desc"
elseif style="ways" then '按通知方式
sql="select from news where ways like '%"&txtitle&"%' order by id desc"
elseif style="lxr" then '按联系人
sql="select from news where lxr like '%"&txtitle&"%' order by id desc"
else
sql="select from news where company like '%"&txtitle&"%' or ways like '%"&txtitle&"%' or lxr like '%"&txtitle&"%' order by id desc"
end if
rsopen sql,conn,1,1
rsPageSize =20
Page = CLng(Request("Page"))
'分页显示
If not Page >1 Then Page = 1
If Page > rsPageCount Then Page = rsPageCount
j=page+(page-1)9
rsAbsolutePage = Page
For i=1 To rsPageSize
if rseof then exit for
%>
可放入你自己想输出的内容
<%rsmovenext
next
%>
<form ACTION="" METHOD="post">
<tr>
<td height="25" align="center" bgcolor="#E1F4E1">共 <span class="org1"><%=rsRecordCount%></span>
条记录,<span class="org1"><%=rsPageCount%></span> 页,当前第 <span class="org1"><%=Page%></span>
页。<%If Page <> 1 Then%>
[<a href="Page=1">
首页</a>]
[<a HREF="Page=<%=(Page-1)%>">
前一页</a>]
<% End If
If Page <> rspageCount Then
%> [<a HREF="Page=<%=(Page+1)%>">
后一页</a>]
[<a HREF="Page=<%=rsPageCount%>">
末页</a>] <%End If %>
输入页次: <input NAME="Page" SIZE="3"></td>
</tr></form>
</table>
这个比较难啊,因为你要实现这个功能,服务员很高。
如果只是一个输入框的话,还好,但是数据量很大的情况下就比较负载高了。
原理是加载页面的时候,已经把你设置好的关键字或者数据库内容提取出来。
然后根据用户输入的按键触发事件,检索匹配内容,在返回输入框提示,和百度那个一样吧,你可以搜索一下,建议服务器负载不好的,尽量不要做这个,宁可你在下面加上热门关键字还好。
现在都是用户体验时代,速度慢会让你流失很多用户的
思路就是先假设只有一条记录,制作这个表格
然后再利用循环语句嵌入到表格代码中,使数据库内容循环显示出来
正好有点时间,写了一下代码,数据库路径,表名,字段名你自己改成你实际的就可以了
<table width="100%" border="1">
<tr>
<td width="10%"> </td>
<td width="30%"><div align="center">场地名称</div></td>
<td><div align="center">预定人</div></td>
<td><div align="center">时间</div></td>
</tr>
<%
'链接数据库
Set conn=servercreateobject("ADODBConnection")
connopen "dbq=" & serverMapPath("数据库路径和名称") & ";Driver={microsoft access driver (mdb)}"
'查询数据库
set rs = connexecute("select from 表名 order by 预定时间的字段名 ASC")
'循环显示所有内容
do while not rsbof and not rseof
%>
<tr>
<td width="10%"><div align="center">月份</div></td>
<td width="30%"><div align="center"><%=rs("场地名称的字段名")%></div></td>
<td><div align="center"><%=rs("预定人的字段名")%></div></td>
<td><div align="center"><%=rs("预定时间的字段名")%></div></td>
</tr>
<%
rsmovenext
loop
%>
</table>
conn连接数据库的自行搞定。
connexecute("select from 表 where 字段 like '%"&replace(request("q"),"'","")&"%'")
if not rseof then
while not rseof then
'输出
end if
rsclose
{Microsoft Access Driver (mdb, accdb)};
或者用OLEDB来连接,设置ConnectionString 属性的 Provider 参数设置为“MicrosoftACEOLEDB120”
如果两个都不行,那就是驱动问题了,去微软官网下载AccessDatabaseEngineexe。
或者安装2007以上的access。。。
以上就是关于求助~~ASP实现数据库查询全部的内容,包括:求助~~ASP实现数据库查询、用ASP搜索数据库~、asp怎样实现文本框输入自动检索数据库,形成选择列表,然后选择输入好像叫智能匹配等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)