数据库中的的'1','2'如何显示成'男'''女'

ancyzhou 2002-11-01 09:23:14
在数据库中的值是1,2,如何在adotable中创建一个新的列,使他相对应的男,女.
...全文
262 22 打赏 收藏 转发到动态 举报
写回复
用AI写文章
22 条回复
切换为时间正序
请发表友善的回复…
发表回复
halfdream 2002-11-01
  • 打赏
  • 举报
回复
用计算字段不好。

同意 xbohzti(无意识) 和 newyj(吴刚vs西西弗) 的方法。

ancyzhou 2002-11-01
  • 打赏
  • 举报
回复
一个dbedit和这个计算字段(计算列)相连的时候,dbedit虽然显示的是enable=true,课是无论怎么样也不可以修改dbedit里面的内容?
newyj 2002-11-01
  • 打赏
  • 举报
回复
用不着
fields.ongettext,settext
newnewworm 2002-11-01
  • 打赏
  • 举报
回复
很简单的方法是添加计算字段ff
case Dataset.fieldbyname('sex').asInteger of
1: Dataset.fieldbyname('ff').Astring:='男';
2: Dataset.fieldbyname('ff').Astring:='女';
end;
--------
SQL 语句也是个不错的做法,不过注意数据类型!
qtercel 2002-11-01
  • 打赏
  • 举报
回复
select sex=(case sex when 1 then '男' else '女' end) from Table
hzb 2002-11-01
  • 打赏
  • 举报
回复
1、在ADOTable里增加一个计算列,例如A
2、在CalcFields事件里写:
case DataSet.Fieldbyname('sex').asInteger of
1: DataSet.Fieldbyname('A').asString= '男';
2: DataSet.Fieldbyname('A').asString= '女';

end;
zfmich 2002-11-01
  • 打赏
  • 举报
回复
这样实现:

procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;
DataCol: Integer; Column: TColumn; State: TGridDrawState);
VAR
M_COLOR:TCOLOR;
M_CHANGEKIND:INTEGER;
M_CHANGENAME:string;
begin
with wagedata.SQLLABORAGE_CHANGE_LOG do
begin
M_CHANGEKIND:= FieldByName('SEX').asINTEGER;
case m_changeKind of
1:
begin
M_COLOR:=CLBLUE;
M_CHANGENAME := '男' ;
END;
2:
begin
M_COLOR:=CLRED;
M_CHANGENAME := '女' ;
end;
else
begin
M_COLOR:=CLBLACK;
M_CHANGENAME := '不男不女' ;
end;
end;
(SENDER AS TDBGRIDEH).Canvas.Font.Color := M_COLOR;
end;
(SENDER AS TDBGRIDEH).DefaultDrawColumnCell(Rect, DataCol, Column,State);
if ansicomparetext(Column.FieldName,'SEX')=0 then
column.Grid.Canvas.TextRect(rect,rect.left,rect.Top,M_CHANGENAME);

end;
zzg40280614 2002-11-01
  • 打赏
  • 举报
回复
用AdoQuery

select Sex=(case Sex when 1 then '男' else '女' end) from yourtable
xbohzti 2002-11-01
  • 打赏
  • 举报
回复
其实方法有很多,但这种是比较好的
xbohzti 2002-11-01
  • 打赏
  • 举报
回复
在field对象的GetText事件中写
ancyzhou 2002-11-01
  • 打赏
  • 举报
回复
不是时间,是事件
ancyzhou 2002-11-01
  • 打赏
  • 举报
回复
在adotable里,添加fields的时候(有一个小窗口),那里有一个选项叫new field,然后可以创建field,点到新创的field时,会有不少时间,能不能在那里填点东西就搞定
happysl 2002-11-01
  • 打赏
  • 举报
回复
很容易的,你先定数据库中的值为1,还是2
if adotable1.fieldbyname('fiel1').value=1 then
adotable2.fieldbyname('fiel1').value:='男';
else
......
试试看看吧
ancyzhou 2002-11-01
  • 打赏
  • 举报
回复
SQL语句里面加个转换具体是如何?
killer2008 2002-11-01
  • 打赏
  • 举报
回复
不用创建列,在显示的时候加一条判断语句:
if fieldbyname('a').asinteger=1 then
edit1.text:='男';
if fieldbyname('a').asinteger=2 then
edit1.text:='女';

javanew 2002-11-01
  • 打赏
  • 举报
回复
1。加字段
2.在程序中转义
3.如果我想在grid中这样的话,我没有办法,有人有办法吗?
yongwolf 2002-11-01
  • 打赏
  • 举报
回复
这个容易啊!
在SQL语句里面加个转换就可以的啦!
呵呵!
dansl 2002-11-01
  • 打赏
  • 举报
回复
oracle数据库中

select decode(sex,'1','男','女') from yourtable
blazingfire 2002-11-01
  • 打赏
  • 举报
回复
呵呵,几位方法可行性不说了,不过用不了这么麻烦!!
procedure TForm1.GetText(Sender: TField; var Text: String;
DisplayText: Boolean);
begin
if Sender.AsString='1' then
Text:='男'
else
Text:='女';
end;

procedure TForm1.ADOTable1AfterOpen(DataSet: TDataSet);
begin
DataSet.FieldByName('SEX').OnGetText:=GetText;
end;
写字段的OnGetText写事件就可以了。
ancyzhou 2002-11-01
  • 打赏
  • 举报
回复
一个dbedit和这个计算字段(计算列)相连的时候,dbedit虽然显示的是enable=true,课是无论怎么样也不可以修改dbedit里面的内容?
加载更多回复(2)

2,498

社区成员

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

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