窗体中有一个datetimepicker,一个dbgrid在dbgrid的一个字段中,填写的时间时候,怎么判断这个时候小于一个 datetimepicker
就不让它保存呢?我在onsetText事件中写入:   if  query1.FieldByName('shuliang').AsDateTime<datetimepicker1.Date then
    showmessage('错误');
    abort;
  end;
怎么运行之后什么反应都没有呀!这个怎么可以呀!

解决方案 »

  1.   

    if  query1.FieldByName('shuliang').AsDateTime < datetimepicker1.Date then
      begin 
        showmessage('错误');
        abort;
      end;可以直接比较啊。
      

  2.   

    if  query1.FieldByName('shuliang').AsDateTime<datetimepicker1.DateTime then
    begin
        showmessage('错误');
        abort;
      end;
      

  3.   

    你要把datetimepicker1.DateTime的时间格式转换一下,他们使不能比较的!用FORMATDATETIME()
      

  4.   

    var
      a,b:TdateTime;
    begin 
      a:=Formatdatetime('yyyy-mm-dd',query1.FieldByName('shuliang').AsDateTime);
      b:=Formatdatetime('yyyy-mm-dd',datetimepicker1.DateTime)
      if  a<b then
      begin
        showmessage('错误');
        abort;
      end;
    end;
      

  5.   

    在保存的时候决定是否保存就应该在数据集保存之前作这个动作呀。在BeforePost
    里写:
    procedure TForm1.Table1BeforePost(DataSet:TDataSet);
    begin
      if DataSet.FieldByName('Time').AsDateTime<DateTimePicker1.DateTime then
      begin
        ShowMessage('对不起!你输入的日期时间不对。');
        Abort;
      end;
    end;
      

  6.   

    谢谢,已经搞定,对了,我随便在问一下!因为我用的是一个时间控件!
    if query1.FieldByName('shijian').AsDateTime<strtodate(dbdateTimeEditeh2.Text) then
    ShowMessage('对不起!你输入的日期时间不对。');
        Abort;
    这样写可以通过!
    而我这样写!strtodate(dbdateTimeEditeh2.datetime)这样就不行是什么意思呀? 
      

  7.   

    数据类型都不一致,这还要问么?多出小时分钟秒数了。你还是按照上面那个人的代码直接写成DateTimePicker1.DateTime,不用再转了