绝地学院剑双持:谁能给我讲解一下如何用access和Asp做搜索

来源:百度文库 编辑:高考问答 时间:2024/05/13 16:17:19
主要技术.

Asp做搜索
这是SQL连接设置出来的
sql="select * from Stay where "&sql_A&" Like '%"&wenben(0)&"%'and "&sql_B&" Like '%"&wenben(j)&"%'"

看这句
意思是找数据库Stay 中 函数 sql_A 的列表包含 函数 wenben(0)
和函数 sql_B 的列表包含 函数 wenben(j) 的数据。
由下到上显示出来。
制作DW+access数据库搜索
你应该走如下思路
1-将数据查询页与接收页及显示页放在一个页面里
先做数据查询显示
2-再做数据提交表单,通过form表单来提交查询字段
3-access里要用到WHERE 搜索的字段 LIKE %'接收到的变量'%(如果是数字型字段就不用加'')
4-根据request值是否为空来判断选择数据库查询语句

这里面,可能第三表比较麻烦一点,我把代码片断贴出来,自己去慢慢体会吧

----------------------------------------------------------------------------------------------------------

搜索的制作:多条件联合查询一个表的制作实例

一,目标,我们要允许客户用模糊查询,即按编号,时间,产品名称,内容,大类,小类,都可以查询得到.
二,分析,对于编号,时间,产品名称,内容,这四项是直接以文字或数字形式存储在pro表里的数据,我们直接用LIKE '%%'语句查询,
对于大类,小类,这种以数字关联形式存储的,即用户在前台不知道大类小类的实际编号的,我们用 bc_id='' sc_id=''的形式去做
三,我们要在一个页面内制作完成产品列表显示及查询功能,所以就有两种情况,当用户没有查询信息时,显示所有产品,当用户有查询信息时(即记录集为pro表全部),用到查询信息时,我们用限定了条件的记录集查询

接下来看代码

<%
Dim pro__shpro
pro__shpro="11111111111111111111111111122222222222222222222"
If (request.form("shpro") <> "") Then
pro__shpro = request.form("shpro")
End If
%>
<%
Dim pro__shbc
pro__shbc=""
If (request.form("shbc") <> "") Then
pro__shbc = request.form("shbc")
End If
%>
<%
Dim pro__shsc
pro__shsc=""
If (request.form("shsc") <> "") Then
pro__shsc = request.form("shsc")
End If
%><%

Dim pro
Dim pro_numRows
Set pro = Server.CreateObject("ADODB.Recordset")
pro.ActiveConnection = MM_edttx_STRING
if (request.form("shpro")<>"") or (request.form("shbc")<>"") or (request.form("shsc")<>"") then
pro.Source = "SELECT * FROM pro WHERE ((pro_id LIKE '%" + Replace(pro__shpro, "'", "''") + "%') OR (pro_content LIKE '%" + Replace(pro__shpro, "'", "''") + "%') OR (pro_time LIKE '%" + Replace(pro__shpro, "'", "''") + "%') OR (pro_name LIKE '%" + Replace(pro__shpro, "'", "''") + "%')) OR ((bc_id = '" + Replace(pro__shbc, "'", "''") + "') OR (sc_id = '" + Replace(pro__shsc, "'", "''") + "')) ORDER BY pro_time DESC"
else
pro.Source = "SELECT * FROM pro ORDER BY pro_time DESC"
end if
pro.CursorType = 0
pro.CursorLocation = 2
pro.LockType = 1
pro.Open()

pro_numRows = 0
%>

注意红色部分,是定义三个变量,分别是模糊查询变量pro__shpro,按大类查询变量pro__shbc,按小类查询变量pro__shsc。
特别注意:
1-如果在form.shpro里没有输入信息,也就是它为空,而它在SQL语句里是与%%搭配的,等于匹配条件是所有,那么会导致后面的form.shbc与form.shsc里的搜索条件形同虚设,我们就只有给它设置一个一般不可能用到的默认值,在这里,我们设置成了一连串的11111111111112222222222,一般情况下,管理员是不会输入这种信息的。这样,达到了我们与其它两个条件区分的目的.
2-关于大类查询变量pro__shbc,按小类查询变量pro__shsc的预设值就容易理解多了,预设为""即为空,如果没有request.form("")给它赋值,那它们就是默认值,是空的这样来区分.
蓝色部分代码:
这一部分我们要注意两个地方,一是要用()将各个条件分开,虽不是必需,但是良好的习惯一定要养成.
二是注意格式 select * from 表 WHERE 字段 = '条件' 这两个单引号一定要注意