应用:dbgrid(dbgrideh)+adoquery+sql2000
显示数据,其中有字段的值可能就为2个,在数据库中存为’1‘或者’0‘。
但我想在显示的时候显示为’有‘或者’无‘,只是在dbgrid中显示为这个,在数据库中不改变
请问怎样可以实现?

解决方案 »

  1.   

    假设你的民族字段名叫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字段在显示时是'男'或'女',在编辑这个字段时又变成整数了。
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~``
      

  2.   

    如果是用sql语句查询出来的,也可以用sql语句实现:select xingming as 姓名, ( case xingbie where 1 then 男 else 女 end ) as 性别,... , from table
      

  3.   

    dbgrideh:
    keylist : 1 2
    itemslist :有 无
    或者adodateset 的ongettext
    if value=1 then
      text = ‘有’
      

  4.   

    我用的是sql语句查询的,
    用2楼的方法可以实现,但现在遇到新问题
    在查询出来的结果中,我想修改这一列中的数据,发现这一列不能修改,请问怎么解决。
      

  5.   

    想修改时取出表中的关键字段值,再用UPDATE修改,不再DBGRID中修改应该没有问题
      

  6.   

    sql 语句中写好了
    select decode(字段,1,'有',0,'无') from XX
      

  7.   

    在你的dbgrid所对应的数据源的table,或者query的,然后再找出字段编辑器,然后你要显示的字段,在它的ongext 事件上,写出
      var tybj:string;
      flag:=table(query).fieldbyname('字段').asstring;
      if flag='1' then
      Text:='有'
      else
      text:='无'