求助~~ASP实现数据库查询
看下面的代码是不是能帮助你
<%
'取得上一页中点击的省市
sheng = Request.QueryString("sheng")
shi = Request.QueryString("shi")
Sql = " 1=1 "
If sheng"" Then
Sql = Sql &" And sssheng='"&sheng&"' "
End If
If shi"" Then
Sql = Sql &" And ssshi='"&shi&"' "
End If
Sql = "Select * From xyz Where "&Sql&" Order By Id Desc"
Set Rs = Server.CreateObject("Adodb.RecordSet")
Rs.Open Sql,Conn,1,1
Do While Not Rs.Eof
'显示数据,格式按自己需要更改
Response.Write "id:"&Rs("id")&"---sssheng:"&Rs("sssheng")&"---ssshi:"&Rs("ssshi")&""
Rs.MoveNext
Loop
Rs.Close
Set Rs = Nothing
%>
一, 查询条件放在排序前面。
sql="select top 10 * from [A] where [b]=1 order by [d] asc"
二,可一把查询条件换成变量,如 n
n=1
sql="select top 10 * from [A] where [b]="&n&" order by [d] asc"
这样可以通过修改变量n的完成
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){out.println("selected");}%>>>部门1</option>
<option value="2" <% if(value==2){out.println("selected");}%>>>部门2</option>
<option value="3" <% if(value==3){out.println("selected");}%> >>部门3</option>
</select>
以上是JSP代码,你可以参考一下,
这样页面刷新后,就可以保持住你选择的那个选项的状态了
1,让提交表单和查询结果在同一个页面上,就是那个页面是可以反复查询的,代码怎么编??
页面里搞个判断吗,比如用GET传递变量,xx.asp?out=true 这样如果request("out")="true" 就输出结果,不=就不输出查询结果,或者可以根据是否有提交查询条件来决定是否输出查询结果,并不影响表单的输出
2,表单提交后下拉列表的值又变成了原来的值,要怎么设置才能让那个值在提交后不还原呢
每次处理查询条件的时候 把查询条件记录下来,输出下拉框时进行判断,碰到相同选项就 输出selected默认选中,如<option selected>部门1</option>
3,查询代码
先定义前半截SQL语句 SQL="SELECT * FROM 表dep WHERE 1=1"(此处1=1以方便衔接下面语句)
然后判断查询条件,假如需判断部门,则SQL=SQL&" and 部门=什么部门"
然后判断是否需要查询设备类型,如需要则,SQL=SQL&" and 类型=什么类型"
最后可加上排序SQL=SQL&" ORDER BY 什么顺序"
呵呵 修改提交之后,时间就变了。
【connect.cfg】文件
<%
set connect=server.createobject("adodb.connection")
constr="provider=microsoft.jet.oledb.4.0;data source=" & datafile '【设置数据库】
connect.open constr
set rs=server.createobject("adodb.recordset")
%>
【index.asp】文件
<!--#include file="connect.cfg"-->
<form name="form1" method="post">
<!-- 【部门】
<select name="select">
<option value="*">不区分</option> //【这里是所有部门】
<option>部门1</option>
<option>部门2</option>
<option>部门3</option>
</select>
-->
<%
'从【数据库】表中动态读取所有部门
sql='select 【部门字段】 from 【表名】 order by 【部门字段】'
rs.open sql,connect,1,1
response.write("<select name='select'>")
response.write("<option value="*">不区分</option>")
while not rs.eof
if request.form("select")=rs(0) then
response.write("<option selected>" &rs(0) & "</option>") '这里实现【选中】功能
else
response.write("<option>" &rs(0) & "</option>")
rs.movenext
wend
response.write("</select>")
'读取【设备】名称
%>
<select name="select2">
<option value="*">不区分</option> 【这里是所有设备】
<option>设备1</option>
<option>设备2</option>
<option>设备3</option>
</select>
<input type="submit" name="Submit" value="查询">
</form>
</body>
</html>
<%
if request.form("select")="*" then
sqlwhere=sqlwhere+"1=1" 【这里是所有部门】
else
sqlwhere=sqlwhere+"部门='"+request.form("select")+"'"
end if
sqlwhere=sqlwhere+" and "
if request.form("select2")="*" then
sqlwhere=sqlwhere+"1=1" 【这里是所有设备】
else
sqlwhere=sqlwhere+"设备='"+Request.form("select2")+"'"
end if
sql = "SELECT * FROM " +sqlwhere '【这里设置你的数据库 附加条件】
rs.open sql,connect,1,1
'【显示结果】
response.write "<TABLE BORDER=1>"
' if 中实现读取表头
if not rs.eof then
response.write "<tr>"
response.write "<td>表标题</td>"
for i=0 to rs.fields.count-1
if i/rs.fields.count-1=0 then response.write "<br>"
response.write "<td>" & rs(i).name & " </td>"
next
response.write "</tr>"
end if
rs.movefirt '设置到第一条记录
'读取表体部分
while not rs.eof
response.write "<td>" & rs(0) & " </td>"
response.write
response.write "</tr>"
wend
rs.close
set rs=nothing
connect.close
set connect=nothing
%>
asp操作access数据库查询--求救高手!
答:<%name1=request.querystring("name1")%> // 获得查询T1表里面的no1参数,< set rs2=server.createobject("adodb.recordset")exec2="select name2 from t2 where name2=""&name1&"rs2.open exec2,conn,1,1 > < set rs=server.createobject("adodb.recordset")exec="select no3 from t3 ...
在asp中,如何检索数据库,显示下面这样一个表?
答:'查询数据库 set rs = conn.execute("select * from 表名 order by 预定时间的字段名 ASC")'循环显示所有内容 do while not rs.bof and not rs.eof > 月份 <%=rs("场地名称的字段名")%> <%=rs("预定人的字段名")%> <%=rs("预定时间的字段名")%> < rs.movenext loop > ...
用ASP与SQL怎样实现数据的添加、查询、修改 删除
答:分为三个步骤 第一个连接到数据库 你现在是ASP新手,您可以网上先搜索一下连接SQL数据库代码.一般都搜索的到.第二步 打开一个表进行读取,更新,添加,删除.一般为 rs.addnew rs.update rs.delete 新建 更新 删除 打开表我用的方法是 set rs=server.createobject("adodb.recordset")sql="select from ...
asp+access数据库查询字段
答:用select语句,调出相关的表中相应的字段,做个页面让它们显示出来就行了 Set conn = Server.CreateObject("ADODB.Connection")conn.Open "driver={Microsoft Access Driver (*.mdb)};dbq="&Server.MapPath("data.mdb")sql = "select * from data"Set rs = Server.CreateObject("ADODB.RecordSet")rs...
asp查询数据库并输出结果
答:你的意思是在A页查询出来,B页显示查询结果。其实很简单,在A页应该有个文本框和一个查询按钮,点击提交到B页面,同时把文本框的值传到B页面,然后在B页里写查询语句select * from table where zl='获取过来的文本框的值也就是10g' 就可以了 很简单的,在A页面什么都不用做,只要有个表单可以...
求ASP中用SQL查询三个数据库,更新数据
答:select * from ZhengJian where Z_jiangjin='未计算'"set rs=conn.execute(sql)do while not rs.eofset rs1=conn.execute("select D_mc from Dengji where D_Dengji='"&rs("Z_zsdengji")&"'")if not(rs1.eof and rs1.bof) thenD_mc=rs1("D_mc")elseresponse.write("数据表1数据...
asp+access数据查询
答:注意修改程序中的数据库名,地址,字段名 < key=split(request("key"))num=ubound(key)for i=0 to num if i<=num and key(i)<>"" and isnumeric(key(i))=true then rkey=key(i)end if next if rkey="" then response.write "alert('内容格式不对请重新输入!');location='"&reque...
ASP怎样根据输入的条件从数据库中检索内容
答:select * from title like '%查询字符%'
如何在一个asp页面中,实现数据的输入与查询
答: 然后在search.asp页面写入数据库查询语句就可以了,简单点就是:id=trim(request("keywords"))set rs=server.createobject("adodb.recordset")rs.open("select * from Employees where id="&id),conn,1,1 以下就是显示了。如果要在同一页面显示,定义为框架就行了 ...
求ASP高手帮忙做一个数据库查找页面,任务完成再给100积分。说情请入内...
答:response.write "数据库连接出错!"Response.End else conn.open connstr if err then err.clear set conn=nothing response.write "数据库连接出错!"Response.End end if end if Sub CloseConn()conn.close set conn=nothing End Sub '按关键字查询 Col="name,summary,quantity,date"tableName="...