asp搜索中有一个表单,定义date1和 date2
要搜索在这两个日期之间的表单数据
代码如下.<%
q1=trim(request("date1"))
q2=trim(request("date2"))if q1="" then
response.write "输入不能为空"
response.end
end ifset rst=server.createobject("adodb.recordset")
sql="select * from 4jinfo where jtime between "&q1&" and "&q2&""
rst.open sql,conn,1,1
%>搜索不到数据但如果把sql="select * from 4jinfo where jtime between "&q1&" and "&q2&""改为sql="select * from 4jinfo where jtime between "2000" and "2007""是可以使用的,能返回数值,麻烦请教问题出哪了

解决方案 »

  1.   

    jtime是什麼類型?datetime?還是數值?
      

  2.   

    sqlserver:
    sql="select * from 4jinfo where jtime between '" & q1 &"' and '" & q2 &"'"access:
    sql="select * from 4jinfo where jtime between #" & q1 &"# and #" & q2 &"#"
      

  3.   

    我检查过了,知道哪错了,如果我填写搜索条件为date1=2000-01-01 date2=2007-12-31时候,是能够搜索的,如果少填写任何一位都是错的,是这样吗,有办法防止吗
    也就是说如果只填写年份date1=2000,date2=2007行吗
      

  4.   

    或者为了防止输入错误是不是可以把年月日分三个格子填写
    date1=y1+m1+d1
    date2=y2+m2+d2select语句:
    time1="'"&trim(Request.Form("y1"))&"-"&trim(Request.Form("m1"))&"-"&trim(Request.Form("d1"))&"'" time2="'"&trim(Request.Form("y2"))&"-"&trim(Request.Form("m2"))&"-"&trim(Request.Form("d2"))&"'"access:
    sql="select * from 4jinfo where jtime between #" & time1 &"# and #" & time2 &"#"-----------------------------------
    或者先定义变量
    y1=trim(request("y1"))
    m1=trim(request("m1"))
    d1=trim(request("d1"))
    y2=trim(request("y2"))
    m2=trim(request("m2"))
    d2=trim(request("d2"))
    time1=y1-m1-d1
    time2=y2-m2-d2
    access:
    sql="select * from 4jinfo where jtime between #" & time1 &"# and #" & time2 &"#"
      

  5.   

    zj4jzyj() ( ) 信誉:100  2007-08-04 15:03:59  得分: 0  
     
     
       我检查过了,知道哪错了,如果我填写搜索条件为date1=2000-01-01 date2=2007-12-31时候,是能够搜索的,如果少填写任何一位都是错的,是这样吗,有办法防止吗
    也就是说如果只填写年份date1=2000,date2=2007行吗
      
     
    ------------------------
    你是一個區間的話,最好在前台就控制好,必須輸入一個時間。如果用戶只輸入了年份,你可以自動給它加上一個月日.
      

  6.   

    必须是有效的时间格式,如果不是,你可以自己在asp端处理下
      

  7.   

    楼上说自己在asp端处理是不是可以按我下面的方法啊
    y1=trim(request("y1"))
    m1=trim(request("m1"))
    d1=trim(request("d1"))
    y2=trim(request("y2"))
    m2=trim(request("m2"))
    d2=trim(request("d2"))
    time1=y1-m1-d1
    time2=y2-m2-d2
    access:
    sql="select * from 4jinfo where jtime between #" & time1 &"# and #" & time2 &"#"
    问题是我写的语句对吗?
      

  8.   

    另外如果要搜索的类型是数值(比如年龄),是不是该改为access:
    sql="select * from 4jinfo where jtime between " & A &" and " & B &""
      

  9.   

    zj4jzyj你用三個控件接受參數可以,或者你直接使用一個時間控件也可以。只要你傳入SQL中的是時間類型即可。
      

  10.   

    谢谢楼上那如果要搜索的类型是数值(比如年龄),是不是该改为access:
    sql="select * from 4jinfo where jtime between " & A &" and " & B &""
      

  11.   

    是不是该改为access
    --------這個是什麼意思?假設jtime類型是數值.sql="select * from 4jinfo where jtime between " & A &" and " & B
      

  12.   

    就是在access数据库中使用的话,语句结构如下
    sql="select * from 4jinfo where jtime between " & A &" and " & B &""如果jtime类型为数值的话,对吗
      

  13.   

    應該沒問題,數值的話,在ACCESS和MS SQL中沒有區別
      

  14.   

    有个问题再请教一下,jtime的类型不一定非要是日期类型是不是,只要填写的数据是2001-01-20格式是不是就可以了啊.因为我刚才发现如果把数据库的jtime类型改为日期型以后,新表单提交不了,说类型不对,提交的程序没有改动,而把jtime类型改为文本后,程序就正常了,也能够执行搜索
      

  15.   

    有这样的语句吗sql="select * from 4jinfo where gj>#" & gj &"#"就是gj孔件大于或等于某个数值
      

  16.   

    应该是日期格式问题,也就是你的sql RTM的或者Sp4的会出现这样的情况,把日期字符串Format一下就行,如“2007-01-01”和“2007-1-1”可能被认为是不同的
      

  17.   

    sql="select * from 4jinfo where jtime between "&q1&" and "&q2&""你这么写不是把q1和q2当成数值型了吗!!!!! 应该有个‘把
      

  18.   

    我检查过了,知道哪错了,如果我填写搜索条件为date1=2000-01-01 date2=2007-12-31时候,是能够搜索的,如果少填写任何一位都是错的,是这样吗,有办法防止吗
    也就是说如果只填写年份date1=2000,date2=2007行吗用if判断一下 如果是没有数值  给一个默认数值不就好了!2000-1-1