if fieldbyname('gender').asstring = 1
then 

解决方案 »

  1.   

    在Table(Query)的GetText事件写程序
    if Table1.FieldByName('性别').AsString='1' then
     Text:='男'
    else
     Text:='女'赋值时在SetText下写与上面相反的程序
      

  2.   

    在Table(Query)的GetText事件写程序
    if Table1.FieldByName('性别').AsString='1' then
     Text:='男'
    else
     Text:='女'赋值时在SetText下写与上面相反的程序
      

  3.   

    在Table(Query)的GetText事件写程序
    if Table1.FieldByName('性别').AsString='1' then
     Text:='男'
    else
     Text:='女'赋值时在SetText下写与上面相反的程序
      

  4.   

    在oncalculate事件中写
    if xx=1 then
      男
    else
      女
      

  5.   

    在Table(Query)的GetText事件写程序
    if Table1.FieldByName('性别').AsString='1' then
     Text:='男'
    else
     Text:='女'赋值时在SetText下写与上面相反的程序
      

  6.   

    可以用dbgrid的canvas属性
    在DBGrid1DrawColumnCell中加入相应语句即可
    如:
    var
    i:integer;
    begin
    for i:=0 to query1.recordcount-1 do
    begin
    if datacol=2 then{性别列}
    begin
    if query1['xb']=true then{判断性别}
    dbgrid1.Canvas.textout(rect.left,rect.top,'男')
    else
    dbgrid1.canvas.textout(rect.left,rect.top,'女');
    end;
    end;
      

  7.   

    为什么不用字符字段?char(2) 
    //简单又方便,直接存取,一条记录就多一个字节,现在的硬盘这样大
    //何必要为省一点空间,找这么多麻烦?//个人观点仅供参考
      

  8.   

    添加一个计算字段(双击Table在对话框增加一个字段field1,Calculated类型的)
    然后在table的OnCalculate事件中写
    if Table.FieldByName('sex').asinteger=1 then
      table.fieldbyname('field').asstring:='男'
    else
        table.fieldbyname('field').asstring:='女';
    最后,在DBGrid中,显示field字段,就OK!
      

  9.   

    重新导到excel表中,将为‘1’的改为‘男’、为‘2’的改为‘女’,再导到数据库里。
      

  10.   

    楼上的flowersun(song),szf(szf)两位朋友的答案是正确的,给分吧
      

  11.   

    var
      str:string;
    begin
    str:='select 性别=case 性别 when ''2'' then ''女'' else ''男'' end from tablename';
    with Query do
    begin
    close;
    sql.clear;
    sql.add(str);
    open;
    end;
    end;  
      

  12.   

    如果是sql server的,直接在sql中用case when就是了。
    其他的可以用计算字段
      

  13.   

    用query语句如下:
    select (case when sex='1' then '男' else '女' end) as 性别,*
    from youtabel
      

  14.   

    flowersun(song)的方法可用。
    szf(szf),lijx18(lijx):TTable和TQuery的GetText事件在哪里?没有找到。
    Judas(),whitehare(小白免),lynu(lynu):用的是Paradox,没有when。
    用计算字段应该也是可行的。
      

  15.   

    CSDN的虚假性太大了,怪不得走了很多人!!
      

  16.   

    这是最经济的编程思路:
      回复人: zswang(伴水)(需要充充电) (2002-1-21 10:45:26)  得0分 
      为什么不用字符字段?
      char(2) 
      //简单又方便,直接存取,一条记录就多一个字节,现在的硬盘这样大
      //何必要为省一点空间,找这么多麻烦?
      //个人观点仅供参考  
      

  17.   

    有一个控件可以利用:DataControls-->DBLookupComboBox.利用它的四个属性可以搞定:
    DataSource,DataField,ListSource,ListField
      

  18.   

    jjdelphi 你是不是受PB感染了
    和pb的数据窗口对象不一样 ,哈!哈!一般要写SQL 语句。
      

  19.   

    szf(szf)正解!其他哥们不必绕弯路了!!!!!!!!!
      

  20.   

    同意szf的意见!gettext事件和settext事件在Ttable中.
      

  21.   

    方法很多种:
    1.采用Select  Case
    2.采用计算字段,
    3.Szf提供方法.
      

  22.   

    whitehare(小白免)的方法不错。给了我们数据转换的一个简单快捷的方法,CASE的用法还有很
    多,当你为一个查询而挠头时,不妨试试用CASE来写
      

  23.   

    ora:
    select decode(性别,1,'男',2,'女','不男不女') from table;
      

  24.   

    我真的不明白:
    1.TTable和TQuery的GetText和SetText事件在哪里?怎么从Help中查不到?请给我一段带有Query1.GetText的过程好吗?
    2.我用的是Paradox表,从SQL Explorer中使用case when 语句(小白兔的句子)时,出错:
    Invalid use of keyword。
    Token:when
    是不是只能在MS SQL Server中才能这样用?
    上述两种用法,我真没有运行通过。
      

  25.   

    呵呵,不幸被你言中了那你就用szf(szf)的方法不过他说错了
    在Table(Query) 中NEW一个Calculated字段如sex
    在sex字段的GetText事件写程序
    if Table1.FieldByName('性别').AsString='1' then
    Text:='男'
    else
    Text:='女'
    赋值时在SetText下写与上面相反的程序 
      

  26.   

    type
      TForm1 = class(TForm)
        DBGrid1: TDBGrid;
        Table1: TTable;
        DataSource1: TDataSource;
        procedure Table1Field1GetText(Sender: TField; var Text: String;
          DisplayText: Boolean);
        procedure Table1Field1SetText(Sender: TField; const Text: String);
        procedure Table1AfterOpen(DataSet: TDataSet);
      private
        { Private declarations }
      public
        { Public declarations }
      end;var
      Form1: TForm1;implementation{$R *.dfm}procedure TForm1.Table1Field1GetText(Sender: TField; var Text: String;
      DisplayText: Boolean);
    begin
      case Sender.AsInteger of
        0: Text := '女';
        1: Text := '男';
        2: Text := '不男不女';
      end;
    end;procedure TForm1.Table1Field1SetText(Sender: TField; const Text: String);
    begin
      if Text = '女' then
        Sender.AsInteger := 0
      else if Text = '男' then
        Sender.AsInteger := 1
      else Sender.AsInteger := StrToIntDef(Text, 0);
    end;procedure TForm1.Table1AfterOpen(DataSet: TDataSet);
    begin
      DataSet.FieldByName('Field1').OnGetText := Table1Field1GetText;
      DataSet.FieldByName('Field1').OnSetText := Table1Field1SetText;
    end;
      

  27.   


    MySql:select IF(sex="1","男",“女") from tablename
      

  28.   

    this:
    MySql:select IF(sex="1","男","女") from tablename 
      

  29.   

    求教各位高手:
    select 性别=case 性别 when ''2'' then ''女'' else ''男'' end from tablename
    这样的功能在Oracle中如何实现。
      

  30.   

    回复人: cdkogh(xp++) (2002-1-22 21:19:00)  得0分 
    ora:
    select decode(性别,1,'男',2,'女','不男不女') from table;  
      

  31.   

    Delphi问题:我基于Panel组件做了一个ActiveX控件(注意不是ActiveForm,也不是VCL组件),但是新的控件没有MouseMove和MouseDown事件,请问各位高手,如何增加上这个事件,最好有详细的步骤说明,另见http://www.csdn.net/expert/topic/482/482855.shtm和http://www.csdn.net/expert/topic/494/494278.shtm,上还有100分,如能解决立即这100分相送,另外再加送200分。
      

  32.   

    有一个ms的data format控件,你找找
      

  33.   

    当选择项很多时(举个例子,case "0" 北京;case "1" 上海;...;case "31" 海南)这样的,以上的方法都好象不是很好(没仔细看,呵呵)。
    其实DataGrid中有个自带方法DataGrid.Item_Bound(),这是在DataGrid绑定item时自动激发的,可以解决以上问题。
    private void Item_Bound(Object sender, DataGridItemEventArgs e) {
    switch(e.Item.Cells[2].Text){
    case "0":
    e.Item.Cells[2].Text = "人事部";
    break;
    case "1":
    e.Item.Cells[2].Text = "技术部";
    break;
    }
    }
      

  34.   

    begin
    adodataset.commandtext:='select ''' + '性别''=case when (性别=''2'') then ''女'' else ''男'' end from tablename';
      with adodataset do
      begin
      open;
      datasource1.dataset:=adodataset;
      dbgrid1.datasource=datasource1;
      end;
    end;