求助比较日期,过期的在DBGrid显示“逾期”(200)

  • 主题发起人 主题发起人 kukemusic
  • 开始时间 开始时间
K

kukemusic

Unregistered / Unconfirmed
GUEST, unregistred user!
麻烦各位高手大人帮忙解决一下这个问题,比如说有一个商品它有一个保质期,我在数据表里是用日期格式存放保质期,现在我要把逾期的用DBGrid显示状态为“逾期”,我想了好几天都不能解决,知道大富翁论坛里高手多所以就在这里发贴求助。。。。
 
为什么不在数据库中用SQL语句来实现,这样效果更好。
 
看来基本功还是不扎实。在TDataset继承下来的控件中,都包含onCalcFields的事件。还包含AutoCalcFields的属性。你只要将AutoCalcFields设置为true,然后在onCalcFields中写入相应的事件即可。注意:必须在TdateSet添加一个CalcFieldsFiled字段。添加的方法是双击Tdataset控件,弹出field编辑器,然后右键。选择new Fields...再然后选择CalcFieldsFiled。。。代码如begin if TDataSet(Sender).FieldbyName('原来存在的保质期字段,可能是tdate类型的').value > now then begin TDataSet(Sender).FieldbyName('专门显示用保质期,应该是字符串类型的').value := '逾期'; endend还有很多细节,不明白的继续问我。
 
楼上正解!也可处理在读取时用一楼的办法!然后前台使用字符!
 
procedure Tfm1.DBGrid1DrawDataCell(Sender: TObject; const Rect: TRect; Field: TField; State: TGridDrawState);begin with TDBGrid(Sender) do begin if dbgrid1.DataSource.DataSet.FieldByName('保质期').value > now then Canvas.TextOut(Rect.Left+4,Rect.Top+2,'逾期'); end;end;
 
楼主也可以考虑在DBGrid内用不同的颜色的行表示“保质期内”和“预期”。
 
de410的方法属于旁门左道[:D]
 
用计算字段是一个比较容易实现的方法,不过如果你的记录用万做单位,数据集打开的时候会感觉到慢
 
谢谢大家的帮忙,问题已经解决了。
 
后退
顶部