首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > .NET >

dbgrideh 格式化输入和数据转换难题,该怎么解决

2012-02-15 
dbgrideh 格式化输入和数据转换难题本人想实现以下效果,请高手指教:在dbgrideh中输时间格式化为____:__:__

dbgrideh 格式化输入和数据转换难题
本人想实现以下效果,请高手指教:
在dbgrideh中输时间格式化为   ____:__:__,最前面代表小时,中间为分,最后为秒.但存入数据库时要化成以秒为单位存入.同样,如果查询时,将数据库以秒为单位的数据转化成小时:分钟:秒的格式显示在dbgrideh中.
例如在输入时为:     0011:02:02,存入数据库应为   39722,但在查询时应显示为:0011:02:02.
也就是说,只要是在dbgrideh中显示还是输入都是0011:02:02格式,但存入数据库为秒数.

[解决办法]
帮顶,不用谢
[解决办法]
帮你顶上去!
[解决办法]
uses DateUtils;

var
a:tdatetime;
b:string;
begin
b:= '11:02:02 ';
a:=StrToDateTime(b);
showmessage(intToStr(SecondOfTheDay(a)));
showmessage(FormatDateTime( 'hh:nn:ss ',a));
end;



[解决办法]
帮你顶上去!

[解决办法]
要处理3个地方:

假设你的字段名是f1:
1。
procedure TForm1.ADOQuery1f1GetText(Sender: TField; var Text: String;
DisplayText: Boolean);
var
A,B,C:Integer;
begin
A:=Sender.AsInteger div 3600;
B:=(Sender.AsInteger-A*3600) div 60;
C:=Sender.AsInteger-A*3600-B*60;
if (A <> 0)or(B <> 0)or(C <> 0) then
Text:=Format( '%.4d:%.2d:%.2d ',[A,B,C])
else Text:= ' ';
end;

2。
procedure TForm1.ADOQuery1f1SetText(Sender: TField; const Text: String);
var
A,B,C:Integer;
begin
A:=StrToInt(Copy(Text,1,4));
B:=StrToInt(Copy(Text,6,2));
C:=StrToInt(Copy(Text,9,2));
Sender.AsInteger:=A*3600+B*60+C;
end;

3。
DBGridEh1.FindColumn( 'F1 ').EditMask:= '0000:00:00 ';

热点排行