破釜沉舟论坛 » WEB 开发 » DW + Access 怎么做搜索查询?

2006-4-8 10:32 xiaozebo
DW + Access 怎么做搜索查询?

请问老师,网页搜索查询功能要怎么做,我是已经入轨网页设计的新手,有实例就十分感谢啦. [s:3]
这个问题困扰已久,希望能在这里解决.   麻烦各位大虾了!!!

2006-4-8 11:34 xiaozebo
[s:35] 没人理睬...

2006-4-8 18:09 xiaozebo
顶上去```````````````

2006-4-8 22:09 zhangsent
那你搜索的对象是你自己的数据库还是网络上的东西`!

2006-4-9 22:20 yyjacky
制作DW+access数据库搜索
你应该走如下思路
1-将数据查询页与接收页及显示页放在一个页面里
  先做数据查询显示
2-再做数据提交表单,通过form表单来提交查询字段
3-access里要用到WHERE 搜索的字段 LIKE %'接收到的变量'%(如果是数字型字段就不用加'')
4-根据request值是否为空来判断选择数据库查询语句

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

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

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

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

接下来看代码
[color=crimson]
<%
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
%>[/color]<%

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
[color=blue]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"[/color]
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 字段 = '条件' 这两个单引号一定要注意

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

2006-4-10 15:42 xiaozebo
首先,谢谢你 yyjacky, 但是仁兄,WHERE红色部分?  我不会是色盲吧?

2006-4-10 21:24 xiaozebo
谢谢,仁兄!

2006-4-10 23:33 xiaozebo
yyjacky 你好,如果我是要精准查询的话呢?

2006-4-11 22:32 xiaozebo
我再问下,按你这么说是不是要做几个表的?

页: [1]


Powered by Discuz! Archiver 5.5.0  © 2001-2006 Comsenz Inc.