dbgrid显示问题

fangzhouyu 2005-10-12 10:27:38
应用:dbgrid(dbgrideh)+adoquery+sql2000
显示数据,其中有字段的值可能就为2个,在数据库中存为’1‘或者’0‘。
但我想在显示的时候显示为’有‘或者’无‘,只是在dbgrid中显示为这个,在数据库中不改变
请问怎样可以实现?
...全文
168 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
webdou 2005-10-19
  • 打赏
  • 举报
回复
在你的dbgrid所对应的数据源的table,或者query的,然后再找出字段编辑器,然后你要显示的字段,在它的ongext 事件上,写出
var tybj:string;
flag:=table(query).fieldbyname('字段').asstring;
if flag='1' then
Text:='有'
else
text:='无'
kv2002 2005-10-19
  • 打赏
  • 举报
回复
sql 语句中写好了
select decode(字段,1,'有',0,'无') from XX
fangzhouyu 2005-10-13
  • 打赏
  • 举报
回复
我用的是sql语句查询的,
用2楼的方法可以实现,但现在遇到新问题
在查询出来的结果中,我想修改这一列中的数据,发现这一列不能修改,请问怎么解决。
sczx999 2005-10-13
  • 打赏
  • 举报
回复
想修改时取出表中的关键字段值,再用UPDATE修改,不再DBGRID中修改应该没有问题
Changefish 2005-10-12
  • 打赏
  • 举报
回复
dbgrideh:
keylist : 1 2
itemslist :有 无
或者adodateset 的ongettext
if value=1 then
text = ‘有’
lovendII 2005-10-12
  • 打赏
  • 举报
回复
如果是用sql语句查询出来的,也可以用sql语句实现:

select xingming as 姓名, ( case xingbie where 1 then 男 else 女 end ) as 性别,... ,

from table
gxgyj 2005-10-12
  • 打赏
  • 举报
回复
假设你的民族字段名叫MZ,类型为Integer,我来举一个例子。
把一切工作做好后,在DBGrid1的OnDrawDataCell事件中写下如下代码:

If (Field.FieldName='MZ') And (Field.AsInteger=1) then
DBGrid1.Canvas.TextRect(Rect,Rect.Left+2,Rect.Top+2,'男');
If (Field.FieldName='MZ') And (Field.AsInteger=2) then
DBGrid1.Canvas.TextRect(Rect,Rect.Left+2,Rect.Top+2,'女');

就行了.
这样做当MZ字段在显示时是'男'或'女',在编辑这个字段时又变成整数了。
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~``
Blakhawk 2005-10-12
  • 打赏
  • 举报
回复
2楼正解啊

2,498

社区成员

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

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