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 ';