我用Tquery,执行select * from tab1取出记录,用dbgrid显示。有一个字段xz,类型为char(1),值只能为'1','2','3'中的一个。我想在dbgrid显示的时候,将其翻译过来,变为'系统管理员','查询员',‘维护员'。因为这个值不太会变动,我想将其写在程序里,而不是放在数据库里。请教各位,该怎么做?如果用数据库,又该怎么做?
解决方案 »
- 急,求Delphi高手
- 18分钟后结贴
- PaintBox上面可以载入一张图片吗?
- 求问当前DELPHI7.0下最强大的报表控件?最好是可以操作EXCEL的。
- OPC HDA
- 如何判断excel单元格的内容为空
- 各位,此功能如何代码实现?
- delphi基本问题
- 有一个将在程序中实现将菜单变成office XP菜单样式的小程序,我忘记在哪个网站上找到过,请提供线索:)[抱歉只有3分了:P]
- 真的没人知道吗?
- 如何不写入硬盘直接运行资源中的exe或dll文件???-100分倾囊,紧急在线等待
- 为什么Delphi把38347转成日期为2004-12-26,而SQL Server却把它转成了2004-12-28,急!!
case xz when '1' then '系统管理员' when '2' then '查询员' when '3' then‘维护员';
1、计算字段方式:创建一个计算字段(假设为MC),段后在数据集的OnCalcFields事件中写
procedure TForm1.ADODataSet1CalcFields(DataSet: TDataSet);
begin
Case ADODataSet1.FieldByName('XZ').AsInteger of
1:MC:='系统管理员';
2:MC:='查询员';
3:MC:='维护员';
end;
end;
2、Select语句方式:
楼上的已经回答;
3、第三方控件方式:
使用Ehlib;在KeyList 和 PickList加入“1,2,3”和“系统管理员,查询员,维护员”,在Grid显示时就能自动对应出来;二、写入数据库:
你得存入一个代码表,然后在Select时使用内连方式(Inner Join)取出数据;参见一下下面的语句
SELECT WORKER.BH, WORKER.XM, WORKER.XB, DMB_XL.XL AS 学历
FROM DMB_XL INNER JOIN
WORKER ON DMB_XL.BH = WORKER.XL
procedure TdmMain.dsCategoryTypeCodeGetText(Sender: TField;
var Text: String; DisplayText: Boolean);
begin
case Sender.AsInteger of
1: Text:='系统管理员';
2: Text:='查询员';
3: Text:='维护员';
end;
end;procedure TdmMain.dsCategoryTypeCodeSetText(Sender: TField;
const Text: String);
begin
if Text = '系统管理员' then
Sender.AsInteger = 1
else if Text = '查询员' then
Sender.AsInteger = 2
else if Text = '维护员' then
Sender.AsInteger = 3
else
Sender.AsInteger = 0;
end;再设定字段对应的表格列的PickList的值为:系统管理员
查询员
维护员
chenylin(陈SIR) ( )讲得比较多,虽可行,但是不推荐用。
如果只是显示,不操作数据的话,推荐用:smilefox2000(遥远的绝响)的方法。
在Sql语句查询时写
case xz when '1' then '系统管理员' when '2' then '查询员' when '3' then‘维护员';