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代码,你可以参考一下,
这样页面刷新后,就可以保持住你选择的那个选项的状态了
'定义链接set conn=Server.CreateObject("ADODB.Connection")
conn.open "provider=sqloledb.1Persist Security Info=falsedata source=数据库地址User ID=用户名pwd=用户密码Initial Catalog=数据库名字"
'定义表
Set ds=Server.CreateObject("ADODB.Recordset")
'查询语句
sql="select * from Table1"
'查询
ds.open sql,conn,1,1
'循环绑定
Do While Not ds.Eof
Response.Write "<li><span>"&ds("date")&"</span><span>"&ds("id")&"</span></li>"
ds.Movenext
Loop
'关闭对象
ds.CLose
Set ds=Nothing
conn.CLose
Set conn=Nothing
'第一处,请注意橙色语法部分sql="select * from zhang"rs.open sql,conn,1,1
If Not (rs.bof And rs.eof) Then '不为空时显示
do while not rs.eof%>'<%= rs("hao") %>',<% rs.movenext
loop
Else
response.write "没有数据"
End If
rs.close
'第二处,请注意橙色语法部分
sql="select * from zhangdan where hao='"&request("danhao")&"'"
rs.open sql,conn,1,3
If Not(rs.bof And rs.eof) Then '不为空时,表示有数据才能更新
if request("act")="mod" then
rs.update
End If
rs.close
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)