查看: 3893|回复: 9

[问与答] 新手求救,麻烦大神抽一分钟帮忙下!

[复制链接]
木子教授 发表于 2015-1-30 09:34:26 | 显示全部楼层 |阅读模式
在网络上面看到下面的代码,觉得很有用,但是如果涉及到 “起始时间”查询的话, 需要怎么修改呢?比方说 start, end 。
----------------------------------------------------------------------------------
<%
'这个函数很关键!---------------------------
Function sql(a,b,sqls)
if b<>"" then '如果客户端没有提交此值,则不会产生相应的SQL语句。
sqls=sqls & " and " & a & " like '%" & b & "%'"
end if
sql=sqls
End Function
'-----------------调用数据库
Set conn=Server.CreateObject("ADODB.Connection")
DBpath=Server.MapPath("/database/mydb.mdb")
Conn.Open "driver={Microsoft Access Driver (*.mdb)};pwd=;dbq=" & DBpath
Set rs=Server.CreateObject("ADODB.Recordset")
sqls="select * from mytable where 1=1 "
'以下调用上面的函数即可,可以很多个调用(理论上是任意)
sqls=sql("subject",subject,sqls)
sqls=sql("company",company,sqls)
sqls=sql("content",content,sqls)
sqls=sql("address",address,sqls)
sqls=sql("infomation",infomation,sqls)
sqls=sql("note",note,sqls)
sqls=sqls & " order by id desc"
rs.open sqls,conn,3,2
%>
ttasp 发表于 2015-1-30 09:54:50 | 显示全部楼层
  1. <%
  2. '这个函数很关键!---------------------------
  3. Function sql(a,b,sqls)
  4. if b<>"" then '如果客户端没有提交此值,则不会产生相应的SQL语句。
  5. sqls=sqls & " and " & a & " like '%" & b & "%'"
  6. end if
  7. sql=sqls
  8. End Function
  9. '-----------------调用数据库
  10. Set conn=Server.CreateObject("ADODB.Connection")
  11. DBpath=Server.MapPath("/database/mydb.mdb")
  12. Conn.Open "driver={Microsoft Access Driver (*.mdb)};pwd=;dbq=" & DBpath
  13. Set rs=Server.CreateObject("ADODB.Recordset")
  14. sqls="select * from mytable where 1=1 "
  15. '以下调用上面的函数即可,可以很多个调用(理论上是任意)
  16. sqls=sql("subject",subject,sqls)
  17. sqls=sql("company",company,sqls)
  18. sqls=sql("content",content,sqls)
  19. sqls=sql("address",address,sqls)
  20. sqls=sql("infomation",infomation,sqls)
  21. sqls=sql("note",note,sqls)

  22. 'stime和etime 分别是起始时间的变量值
  23. sqls=sqls&" and addtime between #"&stime&"# and #"&etime&"#"

  24. sqls=sqls & " order by id desc"
  25. rs.open sqls,conn,3,2



  26. %>
复制代码

'stime和etime 分别是起始时间的变量值
sqls=sqls&" and addtime between #"&stime&"# and #"&etime&"#"

主要是这句
 楼主| 木子教授 发表于 2015-1-30 10:39:36 | 显示全部楼层
本帖最后由 木子教授 于 2015-1-30 10:57 编辑

谢谢斑竹建议,不过,改过了,如果不注释掉时间那行,就会运行失败!
Function sql(a,b,sqls)
if b<>"" then
sqls=sqls & " and " & a & " like '%" & b & "%'"
end if
sql=sqls
End Function
Set rs=Server.CreateObject("ADODB.Recordset")
sqls="select * from meuser where 1=1 "
sqls=sql("webname",webname,sqls)
'sqls=sqls&" and Date between #"&start&"# and #"&end&"#"
sqls=sqls & " order by id desc"
rs.open sqls,conn,3,2
 楼主| 木子教授 发表于 2015-1-30 10:40:59 | 显示全部楼层
回复 2# ttasp


    百度那边的回答是:但是我不知道怎么修改。。
------------------------------------------------------------------
Function sql(a,b,sqls) 改为Function sql(a,b,c,d,sqls)
参数 a,b,sqls 与原函数意义一致
新增加的参数 c为操作符,如 like  >  <  <+  >= 这些,
参数d为字段类型(标记),如 string  int  bool等,
根据类型  操作符  组合sql
当然,如果要用  between   and 这类的,就不行了.
ttasp 发表于 2015-1-30 11:00:43 | 显示全部楼层
谢谢斑竹建议,不过,改过了,如果不注释掉时间那行,就会运行失败!
Function sql(a,b,sqls)
if b"" the ...
木子教授 发表于 2015-1-30 10:39



   不要要用关键词 你的字段名 date是非法的,请用date1。。。。等其他非保留字符
 楼主| 木子教授 发表于 2015-1-30 11:15:01 | 显示全部楼层
本帖最后由 木子教授 于 2015-1-30 11:16 编辑

回复 5# ttasp


    应该不是date 的原因:我另外一段代码也是用的date,是正常的,这个是可以正常运行的。
------------------------------------------------------------------------------------------
if trim(request("start"))<>"" and trim(request("end"))<>"" then
session("start")=trim(request("start"))
session("end")=trim(request("end"))
end if
sql="select * from meuser where date between #"&session("start")&"# and #"&session("end")&"# order by date desc "
set rs=server.createobject("adodb.recordset")
rs.open sql,conn,1,1
-----------------------------------------------------------------------------
我现在是需要在这段代码(“按时间段查询”)的基础上加一个 按“客户ID查询”,然后就找到了,1楼的那段代码。
ttasp 发表于 2015-1-30 12:13:00 | 显示全部楼层
回复  ttasp


    应该不是date 的原因:我另外一段代码也是用的date,是正常的,这个是可以正常运行的 ...
木子教授 发表于 2015-1-30 11:15

把完整代码打包,私信我网盘链接 或者发客服邮箱
 楼主| 木子教授 发表于 2015-1-30 12:38:58 | 显示全部楼层
已经私信,谢谢
ttasp 发表于 2015-1-30 14:44:29 | 显示全部楼层
已经私信,谢谢
木子教授 发表于 2015-1-30 12:38



   要修改的文件是哪个 截图下
ttasp 发表于 2015-1-30 14:58:48 | 显示全部楼层
本帖最后由 ttasp 于 2015-1-30 15:09 编辑
回复  ttasp


    应该不是date 的原因:我另外一段代码也是用的date,是正常的,这个是可以正常运行的 ...
木子教授 发表于 2015-1-30 11:15


增加按客服ID查询的话,像这样就可以了
  1. webname=Trim(Request.Form("webname"))

  2. set rs=server.createobject("adodb.recordset")
  3. sql="select * from meuser where id>0"
  4. if webname<>"" then
  5. sql=sql&" and webname like '%"&webname&"%'"
  6. end if
  7. sql=sql&" and (date between #"&time1&"# and #"&time2&"#) order by date desc "

  8. rs.open sql,conn,1,1
复制代码

覆盖BB同名文件夹下同名文件

bb.rar

3.04 KB, 下载次数: 0, 下载积分: 威望 1 个

售价: 5 个ASP币  [记录]  [购买]

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表

在线客服

售前咨询
售后咨询
服务热线
023-58418553
微信公众号