问大家一个类型转换的问题(100分)

  • 主题发起人 主题发起人 board
  • 开始时间 开始时间
B

board

Unregistered / Unconfirmed
GUEST, unregistred user!
表中有字段名sex,布尔型
请问怎么让sex字段在dbgrid中显示为中文的男,女?
 
可以在Select 语句中设置
如select iif(sex,'男','女') as 性别
以上是Access的语法,不同的系统有所不同。
 
在设计时用固定字段,在sex字段的OnGetText和OnSetText事件中写代码
procedure TDMForm.ADS_DJ_FPFPLYGetText(Sender: TField; var Text: String;
DisplayText: Boolean);
begin
case Sender.Asboolean of
true:Text:='男';
false:Text:='女';
end;
end;

procedure TDMForm.ADS_DJ_FPFPLYSetText(Sender: TField; const Text: String);
begin
if Text='男' then
Sender.AsBoolean:=true
else
if Text='女' then
Sender.AsBoolean:=false;
end;
 
改成字符型还好转一点
 
1. 用DataSet的计算字段,新建一个strSex
在DataSet的OnCalculate事件中
with DataSet do
if Sex then strsex='男'
else strsex='女'

2. 用视图,加多一个字符型的字段
 
在dbgrid的数据源中加入一个计算字段,性别"男"等等
让此字段显示就可以了!
 
sql server 中:
select ...,sex=(when true then '男' else '女') from table where....
 
to ysai 我用的不是固定字段的,是动态的
to lanbing1400 我搞错了,在表中sex字段是字符型的,请问怎么转换过来?

 
在数据库设计时,如无特别要求,将所有字段设为字符型,以后要计算时,再进行转换,
delphi关于字符处理的函数很多,这样便于处理!
这是我个人的观点!
 
问题已经解决了
在sqlserver中
select case xb when '0' then '女' else '男' end as 性别 from xjjbxx
运行成功
但是在delhpi中应该这样
select case xb when ''0'' then ''女'' else ''男'' end as 性别 from xjjbxx
呵呵,细小的区别,差点搞错
谢谢大家!!
 
sql server
select ...,sex=(when sex=1 then '男' else '女') from table where....
 
[:)] 使用计算自段即可,在数据模快中或在数据感知组建Tadotable,Ttable中加入
一个计算自段,在Tdbgrid中选用此计算自段即可

with DataSet do
if Sex then strsex='男'
else strsex='女'
 
数据库设计有问题,这样的字段本来就应该设置成char(2)
 
if Text='男' then
Sender.AsBoolean:=true
else
if Text='女' then
Sender.AsBoolean:=false;
 
后退
顶部