有一个数据表,字段是bzw,它里面的内容就是1或者2或者3.
我想要它在dbgrid里显示的时候这样显示:如果是1,就写成“正常”,如果是2,就写成“修改”,如果是3,就写成“异常”,能实现吗?就是这样,原来显示的是:
id bzw
1 2
2 1
3 1
4 3
我要显示成:
id bzw
1 修改
2 正常
3 正常
4 异常可以吗
我想要它在dbgrid里显示的时候这样显示:如果是1,就写成“正常”,如果是2,就写成“修改”,如果是3,就写成“异常”,能实现吗?就是这样,原来显示的是:
id bzw
1 2
2 1
3 1
4 3
我要显示成:
id bzw
1 修改
2 正常
3 正常
4 异常可以吗
解决方案 »
- delphi ftp保持连接的问题
- 数据集比较的效率问题(超超级难题)
- 紧急!! 关于调用ActiveForm的问题!
- 类型转换问题real to byte
- 在Form1中引用tremotedatamodule对象(向里面加了adoconnection对象,connectionstring属性也配置好了)但读不出来,是什么原因。
- 这么久了,还是没人能给我一个答案!唉...
- 请求帮助
- ---- Dock问题,Delphi高手请进 ---------- =-=-=-=
- 用bde..PackDbf问题
- delphi 301重定向,idhttp ics
- Delphi读取大文件问题
- 从数据表中提取出来的时间字段怎么少了1秒?
SELECT ID, CASE WHEN BZW = 1 THEN '正常'
WHEN BZW = 2 THEN '修改'
WHEN BZW = 3 THEN '异常'
ELSE '未知'
END AS BZW
FROM YOURTABLE
另一种方法:在数据展示控件(一般是Grid类的)的OnGetText事件中去判断,然后更改展示的数据内容。
procedure OnGetEditText(Sender: TObject; aCol, ARow: Integer; FieldName: String; Var Value: String);
begin
if (FieldName = 'bzw') then
begin
if Value = '1' then
Value := '正常'
else if Value = '2' then
Value := '修改'
else if Value = '3' then
Value := '异常';
end;
end;
写个循环while not cliendataset.eof do
begin
if cliendataset.fieldbyname('bzw').asstring:=1 then
begin
cliendataset.edit;
cliendataset.fieldbyname(bzw').asstring:='正常';
cliendataset.post;
end
else if cliendataset.fieldbyname('bzw').asstring:=2 then
begin
...
end
else
...;
cliendataset.next;
end;
when bzw = 2 then '修改'
when bzw = 3 then '异常'
else '未知'
end as bzw
from 表名2.OnGetEditText事件中代碼處理:
if (FieldName = 'bzw') then
begin
if Value = '1' then
Value := '正常'
else if Value = '2' then
Value := '修改'
else if Value = '3' then
Value := '异常';
end;
其他的我有空也会试试的!
之前问朋友,告诉我再建一个表,然后写上状态,语句中写LEFT JOIN zkd_lsb ON zkd_scgl_zxjh.bzw = zkd_lsb.bzw
好麻烦,还是这个好用!