線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:936
推到 Plurk!
推到 Facebook!

在DBGrid中所撈取的資料是否可以改變自己想要的資料

尚未結案
MidasFan
一般會員


發表:41
回覆:22
積分:12
註冊:2004-06-03

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-10-15 12:25:06 IP:61.222.xxx.xxx 未訂閱
在一般DBGrid中 撈取的資料是由Dataset決定 請問我可以將所撈取的資料 作任意的改變嗎 顯示在DBGrid上 EX: 店 名 日期 ----------- cd 10/9 站前店 10/8 天母店 10/9 . . . EF 11/5 高雄店 11/3 屏東店 11/4 ===>想把CD改成北部 EF改成南部 可以做到嗎? 謝謝高手們
cashxin2002
版主


發表:231
回覆:2555
積分:1937
註冊:2003-03-28

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-10-15 12:41:35 IP:202.62.xxx.xxx 未訂閱
您好﹗    DBGrid元件的作用僅在于顯示資料集元件擷取到的資料﹐相關的處理還是要針對資料集元件﹒ 例﹕在DataSet元件的AfterOpen事件中﹕ 方法一(如ADOTable1)﹕
begin
  ADOTable1.First;
  While Not ADOTable1.Eof do
  begin
    if ADOTable1.FieldByName('店名').AsString := 'cd' then
      begin
        ADOTable1.Edit;
        ADOTable1.FieldByName('店名').AsString := '北部';
      end
    else
    if ADOTable1.FieldByName('店名').AsString := 'ef' then
      begin
        ADOTable1.Edit;
        ADOTable1.FieldByName('店名').AsString := '南部';
      end;
    ADOTable1.Post;
    ADOTable1.Next;
  end;
  ADOTable1.Close;
  ADOTable1.Open;
end;
方法二(如ADOQuery1)﹕
begin
  ADOQuery1.Close;
  ADOQuery1.SQL.Add('Update 資料表 Set 店名='北部' Where 店名='cd');
  ADOQuery1.ExecSQL;
  ADOQuery1.Close;
  ADOQuery1.SQL.Add('Update 資料表 Set 店名='南部' Where 店名='ef');
  ADOQuery1.ExecSQL;
  ADOQuery1.Close;
  ADOQuery1.Open;
end;
========================= 大病初愈﹐休養調整中... ========================= 發表人 - cashxin2002 於 2004/10/15 12:47:11
------
忻晟
wameng
版主


發表:31
回覆:1336
積分:1188
註冊:2004-09-16

發送簡訊給我
#3 引用回覆 回覆 發表時間:2004-10-15 13:13:01 IP:61.222.xxx.xxx 未訂閱
cashxin2002 大大!是使用修改資料的方式。 不使用到修改資料。 可以在 DBGRID 的 ONDrawColumnCel 直接替代原來顯示文字 procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect; DataCol: Integer; Column: TColumn; State: TGridDrawState); var CellStr :String; begin if SameText(Column.FieldName,'店 名') then begin CellStr := ''; if Column.Field.asString='CD' then CellStr := '北部' else if Column.Field.asString='EF' then CellStr := '南部'; if CellStr<>'' then begin DBGrid1.Canvas.TextRect(Rect,Rect.Left 2,Rect.TOP 2,CellStr); end; end; end;
kadee
高階會員


發表:11
回覆:141
積分:165
註冊:2002-03-20

發送簡訊給我
#4 引用回覆 回覆 發表時間:2004-10-15 14:43:49 IP:220.134.xxx.xxx 未訂閱
我提供另一個作法,寫在該欄位的ongettext procedure TFINLotEdit.table1field1GetText(Sender: TField; var Text: String; DisplayText: Boolean); begin if table1field1.value = 'CC' then text := '南部'; if table1field1.value = 'DD' then text := '北部'; end; Kadee_BigRed
------
Kadee/BigRed Ent.
www.tw165.com
fangwy
中階會員


發表:99
回覆:139
積分:62
註冊:2003-09-10

發送簡訊給我
#5 引用回覆 回覆 發表時間:2004-10-15 17:19:37 IP:218.5.xxx.xxx 未訂閱
看了两遍,还是不很明白MidasFan的目的.说一种做法,看看是不是你要的. 在你的Table或Query中New一个Calculated Field,如命名为aaa, 在OnCalcFields中加入: if FieldByName('店名').AsString = 'cd' then FieldByName('aaa').AsString = '北部' else if FieldByName('店名').AsString = 'ef' then FieldByName('aaa').AsString = '南部'; 然后在DBGrid中添加新字段aaa,不添加字段'店名',这样在DBGrid中看到的就是 '南部','北部',而不是'cd','ef'. 不过,如果还想编辑这个栏位会麻烦点.
系統時間:2024-09-29 5:00:52
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!