注册 登录
编程论坛 ASP技术论坛

请指导一下.关于文本多字段查询!

lecojason 发布于 2008-03-10 12:32, 857 次点击
程序代码:
look.asp
<form name="myform" action="over.asp" method="post">
<input name="search1" type="text"/>
<input type="submit" value="查询"/>
</form>

在文本框里面输入HA04,HI03然后点查询就会进入over.asp查询
代码如下:
程序代码:

<!--#include file="conn.asp"-->
<% dim pname
   pname=gerform("search1")
   Str=split(pname,",")
   For i=0 to ubound(Str)
      StrTemp=Str(i)
   Next
  Set Rs=Server.CreateObject("Adodb.Recordset")
  Rs.Open "Select * from mbcomp Where proname Like '%"&StrTemp&"%'",dbconn,1,1
  Do while not Rs.eof
  Response.write"<a href=''>"&Rs("proname")&"</a>"
  Rs.movenext
  loop
  Rs.close : Set Rs=Nothing
%>

现在出现错误.就是不能查询到HA04.能找到HI03.能请问什么地方出现了问题.请指导一下.谢谢.

[[it] 本帖最后由 lecojason 于 2008-3-10 12:43 编辑 [/it]]
5 回复
#2
hmhz2008-03-10 13:22
Rs.Open "Select * from mbcomp Where abc1 Like '%"&StrTemp&"%' or abc2 Like '%"&StrTemp&"%' or abc3 Like '%"&StrTemp&"%' or abc4 Like '%"&StrTemp&"%'",dbconn,1,1
#3
lecojason2008-03-10 13:47
结果还是不对.是这样的.通过文本框输入,不止一个.有可能30个产品名,每个产品名用逗号(,)分开,查询MBCOMP这个表里的Proname字段值.如果按照上面的写法.那工作量岂不是很大.请问有没有其他方法.

我现在输入很多个.但是都只能查询到最后面的一个.比如:HA04,......HA03就只能查询到HA03.但是前面的产品名称MBCOMP表里面都是有记录的.
#4
madpbpl2008-03-10 14:09
For i=0 to ubound(Str)
      StrTemp=Str(i)
  Set Rs=Server.CreateObject("Adodb.Recordset")
  Rs.Open "Select * from mbcomp Where proname Like '%"&StrTemp&"%'",dbconn,1,1
  if not (rs.eof and rs.bof) then
  Do while not Rs.eof
  Response.write"<a href=''>"&Rs("proname")&"</a>"
  Rs.movenext
  loop
  end if
  Rs.close : Set Rs=Nothing
Next
试试这样。少了一种判断,如果只输入一个关键词时的情况
#5
hmhz2008-03-10 14:33
说清楚,是许多关键词在一个字段里查询吗?
你的题目是在多字段里查询,那么,你的查询条件里必须要将那几个要查询的字段都要写上去,要不然如何在多字段里查询呢?
#6
lecojason2008-03-10 14:41
谢谢各位的努力.完整的实现了我想要的功能(可以在look.asp无限制的输入产品名如:N65SLI,HI03,HA01-GT3,HA01-GT2 Turbo,M2A693-VDP,M52LESVG-VT,945GCVM2S-A1,N250DAS,754GT-P-EC,I35P-G,N650G,M2A694-GDG,M2A481-VP,M2A480VP,939Turbo-G-EC,PM9MSR2-VC,V500DA ).现在把代码贴上.有漏洞的地方还需大家帮忙补上.谢谢
程序代码:
over.asp
<!--#include file="conn.asp"-->
<%
dim pname
pname=getform("search1")
Str=Split(pname,",")
For i=0 to Ubound(Str)
   StrTemp=Str(i)
   Sql=Sql&" or proname like '%"&StrTemp&"%'"
Next
Set Rs=Server.CreateObject("Adodb.Recordset")
sql="Select * From mbcomp Where proname Like '%"&pname&"%'"&Sql&""
Rs.Open sql,dbconn,1,1
   Response.write"<table width='100%' border='0' cellspacing='1' cellpadding='2' class='tbbgcolor'>"
   Response.write"<tr >"
   Response.write"<td class='trbgcolor_1'>Product Name</td>"
   Do while not Rs.eof
   Response.write" <tr>"
   Response.write" <td  class='trbgcolor_2'><a href='motherboard_view.asp?productid="&Rs("proid")&"'>"&Rs("proname")&"</a></td></tr>"
   Rs.movenext
   loop
   Rs.movefirst
   Response.write"</tr>"
   Rs.close : Set Rs=Nothing
%>


[[it] 本帖最后由 lecojason 于 2008-3-10 14:45 编辑 [/it]]
1