当前位置:首页 » 多媒体相关

关于access的日期查询 在线等 希望各位帮忙


我想查询一段日期类的东西   好象sql.add(select   *   form   table   where   日期   between   #2000-8-3#   and   #2003-8-7#)这样   但是我想用两个edit来自由的输入日期来查询   该怎么写   我试了很久都没成功   请大家给点意见!      
  var  
  date1:tdatetime;  
  date2:tdatetime;  
  begin  
  with   query1   do  
  begin  
  close;  
  sql.clear;  
  date1:=strtodatetime(edit3.text);  
  date2:=strtodatetime(edit4.text);  
  sql.add(select   sum(合格数)   from   表1   where   日期   between   date1   and   date2);  
   
  open;  
  说是参数不足   期待2   access里日期查询好象要有#   我试转成字符比较也不行   我的字段‘日期’是日期行的   希望大家能帮帮我   谢谢了

推荐阅读

  • 本土企业图谋反攻 进手机照相模块供应行列 [详细内容]
  • 网络经商新时代 个人网店玩转C2C [详细内容]
  • 文化部数字娱乐座谈会 庹祖海点“盛大盒子” [详细内容]
  • 显卡之争激烈 宏基开始选用N系移动GPU模块 [详细内容]
  • 简单制作OGG音乐及铃声(=) [详细内容]
  • 百度提升地图搜索服务 增17城市让出行更简单 [详细内容]
  • DRAM实行强制配货 模块厂商即将长期缺货 [详细内容]
  • 网友回答:
    网友:zhenpengka

    要试一下才知道,不过我一直都是用dateedit控件来解决这种问题的!

    网友:x_qiang

    我不知道這句是不是對的,我也忘了  
      sql.add(select   *   form   table   where   日期   between   #2000-8-3#   and   #2003-8-7#)  
      但如果這句是對的,我想下面可以這樣寫  
      ..  
      sql.add(select   sum(合格数)   from   表1   where   日期   between   #+edit3.text+#   and     #+edit4.text+#);

    网友:itlcx

    quyda031.close;  
              quyda031.sql.clear   ;  
              quyda031.sql.add(select   *   from   da030   );  
              quyda031.sql.add(where   (date>=:d1)and(date<=:d2));  
              quyda031.parambyname(d1).asdatetime   :=datetimepicker1.datetime   ;  
              quyda031.parambyname(d2).asdatetime   :=datetimepicker2.datetime   ;  
              quyda031.prepare;  
              quyda031.open;  
      這是我用過的,一定行。(其中的date字段也是日期型)

    网友:zswang

    //no.1   直接看成sql语句,简单又迅速,容易调试,参考x_qiang的代码~~  
      begin  
          {   todo   :   日期的合法检查   }  
          query1.close;  
          query1.sql.text   :=   format(  
      select   sum(合格数)#13#10   +  
      from   表1#13#10   +  
      where   日期   between   #%s#   and   #%s#,  
          [edit3.text,   edit4.text]);  
          try  
              query1.open;  
          except  
              {   toto   :   异常处理   }  
          end;  
      end;  
       
      //no.2   看成参数处理,扩充性大,对于未知的sql类型表达也可以使用~~  
      begin  
          {   todo   :   日期的合法检查   }  
          query1.close;  
          query1.sql.text   :=  
      select   sum(合格数)#13#10   +  
      from   表1#13#10   +  
      where   日期   between   :fstartdate   and   :fenddate;  
          try  
              query1.parambyname(fstartdate).asdate   :=   strtodatetimedef(edit3.text,   0);  
              query1.parambyname(fenddate).asdate   :=   strtodatetimedef(edit4.text,   maxint);  
              query1.open;  
          except  
              {   toto   :   异常处理   }  
          end;  
      end;  
     

    网友:little2000

    sql.add(select   *   form   table   where   日期   between   +edit1.text+and   +edit2.text+)

    网友:yejsj

    sql.add(select   *   form   table   where   日期   between   #+edit1.text+#and   #+edit2.text+#)  
           
       
       
      日期是assess与sql的最大不同的地方,assess太繁了,而且日期很容易出问题,  
     

    .

    讨论区

    Login