bit类型的字段,想把数据1显示为√,数据0显示为×,如何设置?

解决方案 »

  1.   

    看你在哪儿显示....
    Query.Open;
    if Query.FieldByName('bit字段').asBoolean then 
      str := '√'
    else
      str := '×';
      

  2.   

    procedure TfDm.bitGetText(Sender: TField;
      var Text: String; DisplayText: Boolean);
    begin
        displaytext:=true;
        if sender.asboolean then
            text:='√'
        else
             text:='×'
    end;query.fieldbyName('bit').OnGetText=bitGetText;
      

  3.   

    sorry,忘了说了,在dbgrid中显示
      

  4.   

    我是要用语句设置它的形式格式,即用语句设置在dbgrid中的数据1显示为√,数据0显示为×
      

  5.   

    我可以显示汉字'是否'
    将该字段的DisplayValues=是;否;
    可以参考一下
      

  6.   

    因adoquery的sql是动态加的,所以要代码实现数据1显示为√,数据0显示为×,具体该怎么设置?
      

  7.   

    hotzhu(非洲白脸) ,linzhisong(無聊) 地方法都可以
    不过,你也可以写在sql语句里
    select a,b,c,'√' as 'b字段' from table where 'bit字段'
    union
    select a,b,c,'x' as 'b字段' from table where Not 'bit字段'
      

  8.   

    谢谢以上各位,问题还没解决。写在SQL里我知道:select (case sh when 0 then 'x' else '√' end) from mytable就是不想写在SQL里才这样,只想将数据1显示为√,数据0显示为×hotzhu(非洲白脸)写的不是我想要的,我如何将str显示在dbgrid中?
    linzhisong(無聊)写的也不行:ADOQuery1.FieldByName('sh').OnGetText:='√'报错!
      

  9.   

    重新在QUERY中作一个计算字符串字段
    在ONCalcFields事件中 if Query.FieldByName('bit字段').asBoolean then 
      Query.FieldByName('显示字段').asstring := '√'
    else
      Query.FieldByName('显示字段').asstring := '×';
      

  10.   

    我调用的是方法,你那样赋值当然不行了!按照我的格式是绝对可以了!^_^!
     private
    procedure bitGetText(Sender: TField;
      var Text: String; DisplayText: Boolean);procedure TfDm.bitGetText(Sender: TField;
      var Text: String; DisplayText: Boolean);
    begin
        displaytext:=true;
        if sender.asboolean then
            text:='√'
        else
             text:='×'
    end;
    数据集打开时加入:
    query.fieldbyName('bit').OnGetText=bitGetText;
      

  11.   

    query.fieldbyName('bit').OnGetText=bitGetText;如何理解?这是一个条件表达式,右边式procedure
      

  12.   

    adoquery的sql是动态加的,上述说法无法实现(SQL里加一列另当别论)
      

  13.   

    那是一样的
    数据集打开dataset.open;   for i:=0 to dataset.FieldCount-1 do
        begin
               if dataset.fields[i].datatype=ftBoolean then
                  dataset.fields[i].onGetText:=bitGetText;    end;
      

  14.   

    如此麻烦,我还以为有比较简单的方法。最后还是在SQL里加了一列来显示比较简单:(case bit列 when 0 then 'x' else '√' end)
    将原列隐藏显示加的那一列,这样还简单些!