打印报表时如何拆分时间字段(100分)

  • 主题发起人 主题发起人 bushuang
  • 开始时间 开始时间
B

bushuang

Unregistered / Unconfirmed
GUEST, unregistred user!
有一个数据库程序在打印报表时须将内容打印在印好的表格中,其中有一时间字段须分别
打印在表中印的 XX年 XX月 XX日中,我用三个QRDBTEXT指向同一字段,将其中的MASK分别设为YYYY、
MM、DD,在该字段有值时可正常使用,但如是空字段时就会显示1899-12-31日,我该做才能
得到分开的值,请各们高手帮忙!
 
不用QRDBText,用一个QRLabel来打印日期字段,在Band的BeforePrint事件中判断一下:
var
Y, M, D: word;
...
DecodeDate(Table.FieldByName('DateField').AsDateTime, Y, M, D);
if Y=1899 then
QRLabel.Caption := ''
else
QRLabel.Caption := IntToStr(Y)+'年'+IntToStr(M)+'月'IntToStr(D)+'日';
 
用DecodeDate可提取系统时间,代码如下:
procedure TForm1.Button1Click(Sender: TObject);
var
Present: TDateTime;
Year, Month, Day, Hour, Min, Sec, MSec: Word;
begin
Present:= Now;
DecodeDate(Present, Year, Month, Day);
Label1.Caption := 'Today is Day ' + IntToStr(Day) + ' of Month '
+ IntToStr(Month) + ' of Year ' + IntToStr(Year);
DecodeTime(Present, Hour, Min, Sec, MSec);
Label2.Caption := 'The time is Minute ' + IntToStr(Min) + ' of Hour '
+ IntToStr(Hour);
end;
 
如果你想用Sql实现的话:
Ms SqlServer :用DataPart函数,如DataPart('yyyy',Field1)返回Field1的年份。
Access :用Year,Month等。如Year(Field1)
 
多人接受答案了。
 
后退
顶部