DateTime型在DBGrid中的显示(50分)

  • 主题发起人 主题发起人 面条
  • 开始时间 开始时间

面条

Unregistered / Unconfirmed
GUEST, unregistred user!
某一TField是TDateTime型,
在DBGrid中显示时为:yy/mm/dd hh:mm:ss
现在我不想要时间,只想要日期,怎么做?
 
dbgrid1.columes.displayformat:='yyyy/mm/dd';
 
就是这样了,
也可以创建字段对象,更改字段对象中的属性。
 
query1.fieldbyname('datefield1').displayformat:='yyyy/mm/dd';
 
现在可以了!
但是我用鼠标一双击显示日期的某一格,
它又变回原来的样子了 yy/mm/dd hh:mm:ss
:-<
 
我有一个办法,增加一个caculate字段,对每个日期,转换成字符型数据,
得到你需要的格式后,写到新增字段中。而不显示实际的日期字段。
 
cytown:
>>query1.fieldbyname('datefield1').displayformat:='yyyy/mm/dd';
不行!
应该是:
TdateTimeField(query1.fieldbyname('datefield1')).displayformat:='yyyy/mm/dd'
 
还要该一下
TdateTimeField(query1.fieldbyname('datefield1')).EditMask:='......'
具体忘了
 
我想这样行吗:
在OnActivate里添加:
ShortFormate:='yyyy-mm-dd'
 
在Editmask处也改成yyyy/mm/dd
 
我最笨,遇到这种情况只知道ownerdraw. 没想到还有这么多名堂. :-(
 
干脆用dxDBGrid好了,准抱你满意。
不过这家伙有10.8兆,我们现在是五人共享一只可怜的小猫上网,
实在无法寄。不过想要可以找cAkk好了。
 
干嘛找我? 我可从来不发2M以上的邮件.
 
Editmask因该怎么写?
"####/##/##" 不行!"yyyy/mm/dd" 系统根本不认
 
把所有的日期字段全用 char(12)入库不就得了?(1999-11-06)
可以不用考虑一系列问题。大家认为这样有什么坏处吗?
 
这样如果需要利用日期进行计算就麻烦了.
 
1、双击Query或Table,选择字段类型为Datetime的字段
2、displayformat --- yyyy"/"mm"/"dd
3、Editmask -- !9999/99/00;1;_
4、在该字段的OnGetText事件:
if Sender is TDatetimeField then
begin
if (FormatDatetime('yyyy"/"mm"/"dd',Sender.AsDateTime) ='1899/12/30') then Text :=''
else Text :=FormatDatetime('yyyy"/"mm"/"dd',Sender.AsDateTime);
end;
5、在该字段的OnSetText事件:
try
if Sender is TDatetimeField then
Sender.AsDateTime :=StrToDatetime(Text);
except
Showmessage('Error TDatetime ');
end;
6、OK!
 
我是一个新手。
如需分别获取 yyyy/mm/dd中的YYYY、MM、DD 到变量 X,Y,Z 又该
如何(YYYY必须为dtLong型)?
 
后退
顶部