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

【ADO SQL】如何暫時取代資料表中顯示的資料,如 0→女、1→男

答題得分者是:timhuang
uuujjj
一般會員


發表:31
回覆:59
積分:18
註冊:2002-09-28

發送簡訊給我
#1 引用回覆 回覆 發表時間:2003-06-25 12:05:26 IP:61.59.xxx.xxx 未訂閱
各位前輩高手大家好:    在下有一個對大家而言,是非常簡單的疑問(^^"),那就是:    我在資料庫中有一個性別的欄位,其代表號為0 與 1, 使用DBRadioGroup元件可以依0或1來指定顯示的為'女'or'男', 但是,我發現使用DBGrid元件來顯示的話,就只能show出0 跟 1 該如何下SQL來讓'女'跟'男',暫時取代 0 跟 1 呢?? 其環境(Access): 資料表 → VIP 欄位 → Sex(女的為0,男的為1) 稍早前我尋遍了整個版頁, 想找出類似的文章,但究竟是我「功力」不足^^"", 只找到了下列相關由fanny版友所發表的文章… 【問題】about 如何在SQL語法中下case http://delphi.ktop.com.tw/topic.php?topic_id=25262 我的疑問與她相近, 但我使用的資料庫為:Access 我是利用TADOQuery來下SQL指令select資料, 我知道在OracleSQL中,有一個「decode」語法可使用, 但,是否可請教在AccessSQL中,有哪一個類似的語法可使用呢?? 希望前輩們能不厭其煩地為我指導,謝謝~
kklchu
一般會員


發表:7
回覆:16
積分:4
註冊:2002-12-13

發送簡訊給我
#2 引用回覆 回覆 發表時間:2003-06-25 12:18:39 IP:203.83.xxx.xxx 未訂閱
ACCESS iif(sex=0 ,"女","男")
kklchu
一般會員


發表:7
回覆:16
積分:4
註冊:2002-12-13

發送簡訊給我
#3 引用回覆 回覆 發表時間:2003-06-25 12:23:57 IP:203.83.xxx.xxx 未訂閱
ACCESS iif(sex=0 ,"女","男") 戓看看iif 的用法
Rain
資深會員


發表:31
回覆:236
積分:268
註冊:2003-02-17

發送簡訊給我
#4 引用回覆 回覆 發表時間:2003-06-25 12:34:54 IP:218.5.xxx.xxx 未訂閱
uuujjj您好: 可以用下面的方法: 在連接資料庫的ADO元件中加入固定欄位SEX(雙擊元件),然後選擇該欄位,在它的OnGetText (Sender: TField; var Text: String; DisplayText: Boolean) 事件中處理 begin if Sender.AsInteger = 0 then Text := '女' else Text := '男'; end; 反過來要保存至資料庫,處理OnSetText事件
timhuang
尊榮會員


發表:78
回覆:1815
積分:1608
註冊:2002-07-15

發送簡訊給我
#5 引用回覆 回覆 發表時間:2003-06-25 13:15:18 IP:203.95.xxx.xxx 未訂閱
Hi, 若是只要顯示的話, 可以用 sql command 來做沒錯(如 mssql 的 case 或是 access 的 iif),  但若是會有異動的考量的話, 則必須使用 Rain兄的方式來進行, 才可以進行異動, 以下為一個小範例:    
    procedure TForm1.ADOQuery1SEXGetText(Sender: TField; var Text: String;
  DisplayText: Boolean);
begin
  if Sender.FieldName = 'SEX' then
  begin
    case Sender.AsInteger of
      0: Text := '女';
      1: Text := '男';
    end;
    DisplayText := true;
  end;
end;    procedure TForm1.ADOQuery1SEXSetText(Sender: TField; const Text: String);
begin
  if Sender.FieldName = 'SEX' then
  begin
    if Text = '女' then
      Sender.AsInteger := 0
    else if Text = '男' then
      Sender.AsInteger := 1;
  end;
end;
uuujjj
一般會員


發表:31
回覆:59
積分:18
註冊:2002-09-28

發送簡訊給我
#6 引用回覆 回覆 發表時間:2003-06-25 13:57:07 IP:61.59.xxx.xxx 未訂閱
感謝timhuang前輩的總結論指導, 後續,我相信我一定會使用到此方法,因此指定分數給了他, 另外,也感謝其他前輩的指導 ^__^||||||… 因為配分只可給一人,如果可以的話,全部都想給…    以下是我成功寫出來的SQL大略指令,供有同問題的人參考:    Select name as 姓名, iif (sex=0,''女'',''男'') as 性別 from VIP 感謝各位前輩的指教~
系統時間:2024-07-05 4:29:43
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!