我以前是用PB的,这个问题在PB当中非常简单。不过,在Delphi当中我没法子实现这一点。由于有很多数据库字段的值只有几种可能,但要显示的值却非常的长,如果不用这种方法,怕数据冗余实现不必要的扩大。
各位大虾,快帮帮小弟。实在非常的急。

解决方案 »

  1.   

    做View或者是在查询的时候转换。
    select case gender when 1 then '男' else '女' end as gendername from table
      

  2.   

    可以用 SQL 中的 JOIN 查询来实现。建立一个代码与文字含义转化的对应表,然后查询表时连接代码表就可以实现。可以看看 SQL 中的帮助, JOIN 语句等。
      

  3.   

    我常用的就是 flyingkiller(大飞虫) 的那个方法,不错的!
      

  4.   

    把这几种可能另外建 一个表,然后把在你需要存储这种可能的时候只要存储它的标识位,如ID就行了,显示则显示它的描述!如:学历表:ID   DESC
    1    小学
    2    初中
    3    高中或中专
    4   大专
    5   大学
    6   硕士及以上
    7   不详在customer(客户)表中记录学历信息只要记录上面表的ID就行了显示的时候用SQL 语句来查询显示结果!这样做的好处是具有扩展性,且做到了与程序代码的无关性,无论你的代码怎么改,所有信息都 在数据库中
      

  5.   

    在字段的OnGetText事件中加入:
    procedure TForm1.ADOTable1MSGetText(Sender: TField; var Text: String;
      DisplayText: Boolean);
    begin
      if Sender.AsBoolean then 
          Text:='男'
      else 
         Text :='女';
    end;
      

  6.   

    用逻辑型字段,双击你的TABLE,加入必要字段,设置逻辑字段有DISPLAYVALUES属性为“真;假”。
      

  7.   

    参考以下程序:
    procedure TForm1.DBGrid1DrawDataCell(Sender: TObject; const Rect: TRect;
      Field: TField; State: TGridDrawState);
    begin
      if field.FieldName='YourFirld' THEN begin
         DBGRID1.Canvas.FillRect(RECT);
         IF FIELD.AsString='1' THEN
            DBGRID1.Canvas.TextOut(rect.Left+2,rect.Top+2,'男') else
            DBGRID1.Canvas.TextOut(rect.Left+2,rect.Top+2,'女');end;
    end;
      

  8.   

    Drate(鸟窝里的虫) 的方法扩展性好,flyingkiller(大飞虫) 的方法方便
      

  9.   

    一个很好的方法:
      使用Boolean型字段,假设ThisColumn为DbGrid中对应该字段的TColumn
       with DbGrid  do
       begin
         if ThisColumn.Field.DataType=ftBoolean then
         (ThisColumn.Field As TBooleanField).DisplayValues:='男,女';
       end;
      

  10.   

    建两个表
    表一:
    SexID: integer;
    …………//你的表字段
    表二://用于设置编号与性别的关连
    SexID: integer//性别编号
    Sex: string//性别中文“男”,“女”;
    用两个table控件分别连接两个表。
    在表一的table中新建一字段:
    field properties-type为string
    field type为lookup
    然后设置definition就可以了如果还不明白,留下mail,我发个范例给你