Delphi关于字段内容的格式化输出(日期型字段、布尔型字段、数值型字段、计算字段)显示
1、在SQLSERVER中,设字段类型为DATETIME,当输入时只是日期格式‘yyyy-mm-dd',但输出时就变成 'yyyy-mm-dd hh:nn:ss'
解决方式:
在字段所关联的DATASET中,(假设是ADOquery1)双击,在弹出的窗体中添加静态字段,然后设置其Displayformat的属性,设它为'yyyy-mm-dd';
还有一种方法在用ADOQUERY1从数据库中取出数据集时,直接在SQL语句中控制
ADOquery1.sql.text:=select convert(varchar(10),日期型字段名称,120) AS FIELDNAME FROM TABLENAME;
2、在布尔字段中,常用的一种方法是用其来表示性别,但在显示给用户看时,最好又能显示成男、女,以方便用户。
双击ADOquery,在弹出的窗体中生成静态字段,然后你点取这些静态字段,在OnGetText和OnSetText事件中做如下。(我一般习惯用男1女0,想像丰富一点,嘿)
procedure TfrmData.TADOquery1SEXGetText(Sender: TField; var Text: String;
DisplayText: Boolean);
begin
if sender.Value=1 then Text := '男';
if sender.Value=0 then Text := '女';
end;
procedure TfrmData.TADOquery1SEXSetText(Sender: TField;
const Text: String);
begin
if Text = '男' then sender.value :=1;
if Text = '女' then sender.value :=0;
end;
3、数值型字段,有时我们喜欢用数值型来表示一些选值,例如:1、小学生;2、中学生;3、大学生;等等,那么同样可以参照上面布尔型的方法
procedure TfrmData.TADOquery1studentTypeGetText(Sender: TField; var Text: String;
DisplayText: Boolean);
begin
if sender.Value=0 then Text := '小学生';
if sender.Value=1 then Text := '中学生';
if sender.Value=2 then Text := '大学生';
...
end;
procedure TfrmData.TADOquery1studentTypeSetText(Sender: TField;
const Text: String);
begin
if Text = '小学生' then sender.value :=0;
if Text = '中学生' then sender.value :=1;
if Text = '大学生' then sender.value :=2;
...
end;
5、有时还要根据需要生成一个在数据库中不存在的字段,用来显示一些汇总信息,这个叫计算字段的意思,现在你的DBGRIDEH所关联的DATASET中(假设是ADOQUERY1),双击,在弹出的窗体中生成一个计算字段,假设是 工资总额,然后在如下事件中写
procedure Tfrm_DBParamSet.ADOQuery1CalcFields(DataSet: TDataSet);
begin
Dataset.FieldByName('工资总额').Value:=
Dataset.FieldByName('奖金').Value+Dataset.FieldByName('补贴').Value;
end;
来源 http://www.delphibbs.com/keylife/iblog_show.asp?xid=17800