我现在做的医务室药品管理系统当中,需要实现这么样的一个功能:
为了更好的对药品失效期的查询,我用了一个EDIT,用户可以在这里
输入要查询的日期,点击”查询“按钮后可以得到输入日期有前后三天
的药品名称,类型等。
过几天我就要给客户安装了,希望那位大侠给点高见!!!
急!!!!!!!

解决方案 »

  1.   

    select * from table 
    where abs(datediff('D',表中字段,EDIT值)) <= 3
    不过对你的意思不太理解
      

  2.   

    SQL语句:
    'select * from table where date>='''+date1+''' and date<='''+date2+''''
      

  3.   

    同意楼上不过你可以试一试这种方法:if RadioButton1.Checked=true then
      begin
        with datamodule1.JhdADOQuery do
          begin
            close;
            sql.Clear;
            sql.Add('select * from 进货表 where 进货日期>='+''''+formatdatetime('yyyy-mm-dd hh:mm:ss',datetimepicker1.datetime)+''''+' and 进货日期<='+''''+formatdatetime('yyyy-mm-dd hh:mm:ss',datetimepicker2.datetime)+'''');
           open;
        end;
      end;
      

  4.   

    先谢谢各位了!
    因客户的要求我用的是ACCESS的数据库,在日期这一项中,开始我用的是DATETIME型,可是显示时总是不对!!所以没有办法,我就将它改成了STRING型,但现在又要实现这种功能。
    我的代码如下:
    var date1;tdatetime;
        date2;tdatetime;
        date3;tdatetime;
    begin
    ...
    if edit1<>''then
      begin
       date1:=strtodate(dbcombobox1.Text);
       date2:=date-7;
       date3:=date+7;   query1.close;
       query1.sql.clear;
       query1.sql.add('select  overtime as 失效日期 ,  mydate as 时间, period as 有效期 , drugname as 药品名称, drugunit as 单位,   drugnum as 数量, drugaddr as 产地,spec as 规格, drugcode as 批号,price as 价格');
       query1.SQL.Add('from drugin') ;
       query1.sql.add('where  overtime >='+ #39 +datetostr(date2) + #39);
       query1.sql.add('and overtime<='+datetostr(date3)+#39);
       query1.open
    可是不行!!!各位大哥给看看!!!
      

  5.   

    ...
       query1.sql.add('where  overtime >='+ #39 +datetostr(date2) + #39);
       query1.sql.add('and overtime<='+datetostr(date3)+#39);
                                     ^是不是这里少了一个#39
       query1.open
      

  6.   

    select * from table 
    where abs(datediff('D',日期的字段,EDIT.text)) <= 3
      

  7.   

    select * from table
     where fdate between :sd and :ed
    在delphi里这样写:
      parambyName('sd').Value := strtodate(edit1.text) -3;
      parambyName('ed').Value := strtodate(edit1.text) +3;
      

  8.   

    各位的方法我试了,用作用!!可现在还是没能解决这个问题,现在我每次查询时总是给我报错:类型不对,可是我的数据表和datetimepicker中用的都是
    短时间型:如表中显示为:2002-9-10  在datetimepicker中
    显示为2002- 9-10,它就是多一个空格!!
    这个问题没有解决,小弟我真是昨晚一夜都没有睡着,希望大哥们再帮帮我!!谢谢了。
      

  9.   

    这个搞定空格stringreplace,把空格替换为空
      

  10.   

    那你把日期获得后
    var
      S : String;
    begin
      S := DataTimeToStr(DateEdit.Date);
      //写一个函数将 月 如果是一位替换为2位
      S := S + " 00:00:00";
      //查询的时候就可以用字符串匹配了
    end;//end