如图所示2009-1-31 在数据库为 varchar(50),不是日期格式,如何使在点击日期这两行的时候过滤参数这列是日期格式,不是这两行是其他格式,
if ADOQuery2.FieldByName('F_Type').AsString='开始时间' then
tnumericfield(adoquery2.fieldbyname('F_Type')).DisplayFormat:='hh:mm';这样不行呀,还有一种办法是,将DateTimePicker1控件显示在上面,我希望还是格式化数据最好
if ADOQuery2.FieldByName('F_Type').AsString='开始时间' then
tnumericfield(adoquery2.fieldbyname('F_Type')).DisplayFormat:='hh:mm';这样不行呀,还有一种办法是,将DateTimePicker1控件显示在上面,我希望还是格式化数据最好
我就问怎么处理呀procedure TFrm_Analysis.DataSource2DataChange(Sender: TObject;
Field: TField);
begin
if ADOQuery2.FieldByName('F_Type').AsString='开始时间' then
tnumericfield(adoquery2.fieldbyname('F_Type')).DisplayFormat:='hh:mm';
if ADOQuery2.FieldByName('F_Type').AsString='往来单位' then
dbgrideh2.Columns[1].ButtonStyle:=cbsEllipsis
else
begin
if ADOQuery2.FieldByName('F_Type').AsString='经手人' then
dbgrideh2.Columns[1].ButtonStyle:=cbsDropDown
else
dbgrideh2.Columns[1].ButtonStyle:=cbsAuto;
end;
end;就是时间不知道怎么处理呀,其他都可以了
也不行呀,哪错了
改成日期类型吧
为什么搞个Varchar,不是找麻烦么
没办法中如果用datetime的话,那么下面的商品供应商部门就不适合呀,有更好的办法没
我现在的处理方法是
procedure TFrm_BillList.DBGridEh2DrawColumnCell(Sender: TObject;
const Rect: TRect; DataCol: Integer; Column: TColumnEh;
State: TGridDrawState);
begin
if (gdfocused in state) and (column.FieldName= 'F_Value') and (edit1.Text='1') then
begin
DateTimePicker1.Visible:=true;
DateTimePicker1.SetBounds(rect.Left+dbgrideh2.Left+1,rect.Top+dbgrideh2.Top+1,
rect.Right - rect.Left,rect.Bottom-rect.Top);
end; if (gdfocused in state) and (column.FieldName= 'F_Value') and (edit1.Text='2') then
begin
DateTimePicker2.Visible:=true;
DateTimePicker2.SetBounds(rect.Left+dbgrideh2.Left+1,rect.Top+dbgrideh2.Top+1,
rect.Right-rect.Left,rect.Bottom-rect.Top);
end;end;
begin
DateTimePicker1.Visible:=true;
DateTimePicker1.SetBounds(rect.Left+dbgrideh2.Left+1,rect.Top+dbgrideh2.Top+1,
rect.Right - rect.Left,rect.Bottom-rect.Top);
end; if (gdfocused in state) and (column.FieldName= 'F_Value') and (edit1.Text='2') then
begin
DateTimePicker2.Visible:=true;
DateTimePicker2.SetBounds(rect.Left+dbgrideh2.Left+1,rect.Top+dbgrideh2.Top+1,
rect.Right-rect.Left,rect.Bottom-rect.Top);
end;