有四个组合框,分别是combo1(1) ,combo1(2),combo1(3),combo1(4).
其中combo1(1) 为开始月份,combo1(2)为结束月份,combo1(3)为开始日期,combo1(4)为结束日期
要想查询出开始时间12月26日-1月1日的记录。年份不预考虑。我写的查询条件为:Set rs = con.Execute("select * from anli where cmonth='" & Trim(Combo1(1).Text) & "'and val(cday)>=" & Trim(Combo1(3).Text) & " and val(cday)<= 31 or cmonth='" & Trim(Combo1(2).Text) & "' and val(cday)>=  1  and val(cday)<=" & Trim(Combo1(4).Text))没有报错,但是数据库中有符合条件的记录,显示为没有符合记录。
这个查询语句哪里有错?
高手请指点

解决方案 »

  1.   

    如果不考虑年12月26日-1月1日肯定是空集
    没有年份就意味着1月1日最小,12月31日最大
    查12月26日-1月1日的记录
    就像  x>9 and x<1 一样,x只能是空集要查12月26日-1月1日的记录必须要考虑年份,否则只能查1月1日-12月26日的记录还有sql句中觉得这样好点:
    Set rs = con.Execute("select * from anli where (cmonth='" & Trim(Combo1(1).Text) & "'and val(cday)>=" & Trim(Combo1(3).Text) ) and ( cmonth='" & Trim(Combo1(2).Text) & "' and  val(cday)<=" & Trim(Combo1(4).Text) & ")" )以上是个人愚见,见笑了
      

  2.   

    首先你用的是什么数据库?你数据库中的日期也是月、日分开的吗?这样的做法确实没有必要
    直接用一个DTPICKER控件实现起来多方便
      

  3.   

    不错,用dtp控件吧,我遇到日期间隔的时候,都用这个,很好用的。