onCalcFields方法怎么用

yangxiaojia27 2014-10-17 11:11:31
procedure Tydxxgl.FormShow1;
begin

qry1.Close;
qry1.SQL.Text:='select a.*, zt as zhuangtai from ydxx a';
qry1.Open;

end;



procedure Tydxxgl.qry1CalcFields(DataSet: TDataSet);
begin
if qry1.FieldByName('zt').AsString='1' then
begin
qry1.FieldByName('zhuangtai').AsString:='预订中';
end;
if qry1.FieldByName('zt').AsString='2' then
begin
qry1.FieldByName('zhuangtai').AsString:='已入住';
end;
if qry1.FieldByName('zt').AsString='3' then
begin
qry1.FieldByName('zhuangtai').AsString:='已取消';
end;
end;

我想实现从数据库中查询,然后赋值,再在dbgrid中显示出来,比如数据库中状态是1,我想在dbgrid中显示‘预订中’,这是代码,哪里出问题了,怎么还是显示的是1啊?我是新手。。。。。
...全文
336 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
yangxiaojia27 2014-10-17
  • 打赏
  • 举报
回复
我用的是access数据库啊
c_do0123 2014-10-17
  • 打赏
  • 举报
回复
你可以在sql里面创建个视图,让sql去转化。
Playmaster 2014-10-17
  • 打赏
  • 举报
回复
你这种方式不对,看SQL语句你的‘zhuangtai'字段和’zt‘字段其实是同一个字段,自己变自己改没用。 你应该新增一个field,类型是计算字段。再用这个新增的字段来计算。 类似这样吧: var newfield: TStringField; begin qry1.Close; qry1.SQL.Text:='select a.* from ydxx a'; //不需要zt as zhuangtai 了 qry1.open; .... .... newfield := TStringField.create(qry1); newfield.fieldname := 'ztcalc'; newfield.fieldtype := fCalcField; //可能是这个属性吧,我也记不清了,你自己查 qry1.fields.add(newfield); ..... 自己去试试。 或者在设计时就在TQuery组件的字段编辑器中把这个自定义字段加上,这样就不需要上面那些代码了。

2,496

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 数据库相关
社区管理员
  • 数据库相关社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧