DBGridEh 转换显示数据
我有一个数据表
里面有一个字段 TranType
TranType
======
1
2
3
1
3
2
1
1
1
我想把
1  人民币
2  欧元
3  美元
代码应该如何写var
i:integer;
beginwith dm.Sys_Query do
  begin
    Close;
    sql.Clear;
    sql.Text:='select TranType from EndTotal';
    open;
    for i:=1 to RecordCount+1 do
      begin
        if FieldByName('TranType').AsString='1' then DBGridEh1.Fields[4].Text:='人民币;        next;
      end;
  end;

解决方案 »

  1.   

    如果是oracle数据库可以用decode函数
    'select decode(TranType,'1','人民币','2','欧元','3','美元') from EndTotal'
      

  2.   

    两种方法:
    1. 改SQL:select case column when 1 then ‘人民币’ when 2 then ‘欧元’ from table2.刷新 DBGRIDprocedure TfrmXMDKDJ.DBGridEh1DrawColumnCell(Sender: TObject;
      const Rect: TRect; DataCol: Integer; Column: TColumnEh;
      State: TGridDrawState);
    begin  if (datacol = 2) then
      begin
        if (DBGridEh1.DataSource.DataSet.FieldByName('UserBH').asstring = UserBH ) then
        begin
          DBGridEh1.Canvas.Brush.Color := $00FFFFC8;
          DBGridEh1.Canvas.TextRect(Rect, Rect.Left + 2,Rect.Top + 2,DBGridEh1.DataSource.DataSet.FieldByName('RQ').Value);
        end
      end;
    end;
      

  3.   

    方法有三:1.可用sql之case when then 方法實現;
    2.事件代碼:類似以下這樣procedure TQCD_RMA_F.cxGrid1DBBandedTableView1Column18GetDisplayText(
      Sender: TcxCustomGridTableItem; ARecord: TcxCustomGridRecord;
      var AText: String);
    begin
      inherited;
      if AText<>'' then
      begin    if AText='-1' then
        begin
          AText:='取消單號';
        end;  
      end;
    end;
    3.數據集單元格的properties屬性設置成ImageComboBox後再設置替換的內容即可