当数据表中字段Sex=1,如何在DBGrid中显示为其他名称,例如:男?

ramile 2004-03-17 09:11:35
当数据表中字段 Sex=1,如果在DBGrid中显示为其他名称,例如:男?

谢谢先!
...全文
118 20 打赏 收藏 转发到动态 举报
写回复
用AI写文章
20 条回复
切换为时间正序
请发表友善的回复…
发表回复
TR@SOE 2004-03-22
  • 打赏
  • 举报
回复
OnGetText/OnSetText最好,不用修改数据库结构,实现也很简单。
lovebcb 2004-03-22
  • 打赏
  • 举报
回复
同意 计算字段
Persistent8813 2004-03-22
  • 打赏
  • 举报
回复
仁者见仁,智者见智
explorer2 2004-03-22
  • 打赏
  • 举报
回复
首先在与DBGrid关联的Query或是Table中添加相应的field,然后在改field的OnGetText/OnSetTex事件中写入内容如下:
Query1fieldGetText(TField *Sender,AnsiString &Text, bool DisplayText)
{
if(Sender->AsInteger == 1)
Text = "男";
else
if(Sender->AsInteger == 2)
Text = "女";
}
Query1fieldSetText(TField *Sender,const AnsiString Text)
{
if(Text =="男")
Sender->AsInteger =1;
else
if(Text=="女")
Sender->AsInteger =2;
}
lilige 2004-03-21
  • 打赏
  • 举报
回复
To Leevy(叶风) :
我狂笑,HAHAHAHHHHAHAHAHAHHAHAHAHAH,还“人妖”
痞子酷 2004-03-20
  • 打赏
  • 举报
回复
在Query的OnCalcFields事件中写
if(Query1Sex1->AsInteger)
Query1sSex->Value="男";
else
Query1sSex->Value="女";

或者:
ORACLE
SELECT DECODE(1,‘M’,‘F’) FROM DUAL;
Persistent8813 2004-03-20
  • 打赏
  • 举报
回复
bcbsoft(苍之雪)的方法也不错,而且能建立一个新数据集,如果打印更有好处。。。
leeky 2004-03-20
  • 打赏
  • 举报
回复
加入计算字段呀。
cfchhx 2004-03-19
  • 打赏
  • 举报
回复
CCLIS(www.cclis.com) 的方法好一些
szcyx 2004-03-18
  • 打赏
  • 举报
回复
在数据表的事件OnGetText中处理
yzwpf 2004-03-18
  • 打赏
  • 举报
回复
TField::OnGetText
Write an OnGetText handler to perform custom processing for the DisplayText and Text properties. Use OnGetText to format the Value of the field differently when it must be edited from the format used when simply displaying the value, or use OnGetText to display something other than the field's value when it is displayed.

可见CCLIS(www.cclis.com) 的方法比较正宗
Chimae 2004-03-18
  • 打赏
  • 举报
回复
双击Query,添加所有你想在DBGrid中显示的内容,也可一通过Visible来控制是否显示,新建一个计算型字段,取名sSex,赋值长度。
在Query的OnCalcFields事件中写
if(Query1Sex1->AsInteger)
Query1sSex->Value="男";
else
Query1sSex->Value="女";
过客猫2022 2004-03-17
  • 打赏
  • 举报
回复
bcbsoft(苍之雪)的方法好:)
CCLIS 2004-03-17
  • 打赏
  • 举报
回复
直接在数据源的这个字段的gettext函数中设置。

field1gettext(sender, Editing, text)
{
if(sender->asinteger == 1)
text = "男";
else
if(sender->asinteger == 2)
text = "女";
else
text = "?";
}

手边没有BCB,不能写出函数头,在数据源里这样改过,任何地方调用这个字段均可以自动这样显示。
bcbsoft 2004-03-17
  • 打赏
  • 举报
回复
代码有错,改正如下:
if(Query->FieldByName("Sex")->AsInteger==1)
Query->FieldByName("Sex1")->AsString="男";
else
Query->FieldByName("Sex1")->AsString="女";
bcbsoft 2004-03-17
  • 打赏
  • 举报
回复
用计算字段:
添加一个计算字段 Sex1,类型为String,Title显示为Sex,DBGrid中不要显示Sex这列(去掉这列)

在Query的OnCalcFields事件中写
if(Sex==1)
Query->FieldByName("Sex1")->AsString="男";
else
Query->FieldByName("Sex1")->AsString="女";
wakala 2004-03-17
  • 打赏
  • 举报
回复
或者用类似下面代码:
DBGrid1->Columns->Items[0]->Title->Caption="mm";
wakala 2004-03-17
  • 打赏
  • 举报
回复
双击DBGrid组件,在弹出菜单执行Columns Editor..命令,在Editing DBGrid。Columns窗体中添加所有的字段,然后更改Sex字段的Title->Caption属性为男,就行了
freshman2003 2004-03-17
  • 打赏
  • 举报
回复
不用DBGrid,用TEdit代替,自己想怎么显示就怎么显示。

1,178

社区成员

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

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