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

下sql查詢語法時~~要如何用增加一個虛擬欄位來記錄判斷另一個欄位的結果

尚未結案
sera
一般會員


發表:10
回覆:19
積分:5
註冊:2003-06-02

發送簡訊給我
#1 引用回覆 回覆 發表時間:2003-06-02 15:14:24 IP:211.72.xxx.xxx 未訂閱
我說清楚點~~ 假設table1有三個欄位:t1,t2,t3 以sql查詢完後,希望多一個t4欄位,內容為如果t2=a,則t4=1,如果t2=b則t4=2,如果t2=c,則t4=3....先謝了 (資料庫為access)
比爾丐自
初階會員


發表:33
回覆:115
積分:29
註冊:2003-02-14

發送簡訊給我
#2 引用回覆 回覆 發表時間:2003-06-02 15:43:21 IP:61.145.xxx.xxx 未訂閱
[quote] 我說清楚點~~ 假設table1有三個欄位:t1,t2,t3 以sql查詢完後,希望多一個t4欄位,內容為如果t2=a,則t4=1,如果t2=b則t4=2,如果t2=c,則t4=3....先謝了 (資料庫為access) 我想問你是不是t2為26個字母﹐或只是可能有其它的值﹐而按值來依次算有多少個不同位是嗎﹖你的意圖是什么﹖也許會幫你想其它解決辦法.
problemman
一般會員


發表:7
回覆:25
積分:16
註冊:2003-04-11

發送簡訊給我
#3 引用回覆 回覆 發表時間:2003-06-02 15:49:55 IP:203.198.xxx.xxx 未訂閱
1. 先double click Table1,然後按right click擇"add all fields",匯入所有fields   2. 再按right click 擇"New Field",輸入以下資料,記得在"Field Type"擇"Calculated",再按"ok" 3.這樣一個"Caculated field"-->"t4"便產生了 4.之後在Table1裡的event OnCalcFields加入以下code
 
procedure TDataModule2.ADOTable1CalcFields(DataSet: TDataSet);
begin
  if DataSet.FieldByName('t2').AsString='a' then
     DataSet.FieldByName('t4').AsInteger=1
  else if DataSet.FieldByName('t2').AsString='c' then
     DataSet.FieldByName('t4').AsInteger=3;
end;
試試吧 《觸不到的問題人》 來無影,去無踪, 問題總是一羅羅。 發表人 - problemman 於 2003/06/02 15:54:50
sera
一般會員


發表:10
回覆:19
積分:5
註冊:2003-06-02

發送簡訊給我
#4 引用回覆 回覆 發表時間:2003-06-02 15:57:12 IP:211.72.xxx.xxx 未訂閱
引言: [quote] 我說清楚點~~ 假設table1有三個欄位:t1,t2,t3 以sql查詢完後,希望多一個t4欄位,內容為如果t2=a,則t4=1,如果t2=b則t4=2,如果t2=c,則t4=3....先謝了 (資料庫為access) 我想問你是不是t2為26個字母﹐或只是可能有其它的值﹐而按值來依次算有多少個不同位是嗎﹖你的意圖是什么﹖也許會幫你想其它解決辦法.
sera
一般會員


發表:10
回覆:19
積分:5
註冊:2003-06-02

發送簡訊給我
#5 引用回覆 回覆 發表時間:2003-06-02 16:03:28 IP:211.72.xxx.xxx 未訂閱
我再補充說明一下~~這個查源來源是以SQL語法JOIN三個TABLE而來的
problemman
一般會員


發表:7
回覆:25
積分:16
註冊:2003-04-11

發送簡訊給我
#6 引用回覆 回覆 發表時間:2003-06-02 16:21:28 IP:203.198.xxx.xxx 未訂閱
sera姐,你有試過我的方法嗎? 道理都是一樣的,如你是join table我想你應該要用TQuery,之後的做法是一樣呀......... (註:
sera
一般會員


發表:10
回覆:19
積分:5
註冊:2003-06-02

發送簡訊給我
#7 引用回覆 回覆 發表時間:2003-06-02 16:43:37 IP:211.72.xxx.xxx 未訂閱
problemman~謝謝你 真不好意思~才疏學淺~請別見笑 我有想試您的方法了,可是我不知道要怎麼做, 因為
problemman
一般會員


發表:7
回覆:25
積分:16
註冊:2003-04-11

發送簡訊給我
#8 引用回覆 回覆 發表時間:2003-06-02 16:52:27 IP:203.198.xxx.xxx 未訂閱
可以用SQL來達成的,試試這樣寫條SQL吧 SELECT t1, t2, t3, IIF(t2='a' ,1,(IIF(t2='C',3,0))) as t4 FROM Table1 《觸不到的問題人》 來無影,去無踪, 問題總是一羅羅。 發表人 - problemman 於 2003/06/02 16:55:23
sera
一般會員


發表:10
回覆:19
積分:5
註冊:2003-06-02

發送簡訊給我
#9 引用回覆 回覆 發表時間:2003-06-02 17:30:24 IP:211.72.xxx.xxx 未訂閱
真的太感激了~~這就是我要的了~~終於成功了~~ 想再問最後一個問題~~ 如果要指定這個欄位的長度要怎麼下呢?
problemman
一般會員


發表:7
回覆:25
積分:16
註冊:2003-04-11

發送簡訊給我
#10 引用回覆 回覆 發表時間:2003-06-02 17:56:24 IP:203.198.xxx.xxx 未訂閱
sera: 你是否想在上面的SQL定義某一個Field的長度,Delphi在沒有VCL下做這是很難的,加上由於是動態產生SQL的關係,所以如果你想設定某個field的長度,惟有在產生SQL裏動手 試試這樣寫條SQL吧(e.g.想設定field -->'t3'只可有長度10) SELECT t1, t2, Mid(t3,1,10) as midt3, IIF(t2='a' ,1,(IIF(t2='C',3,0))) as t4 FROM Table1 不知可否答到你的問題,如果是我理解錯誤,請長加解釋,我現在放工了,可能不能立刻答你,回家再答你吧,see u 《觸不到的問題人》 來無影,去無踪, 問題總是一羅羅。 發表人 - problemman 於 2003/06/02 17:59:26 發表人 - problemman 於 2003/06/02 18:00:26 發表人 - problemman 於 2003/06/02 18:01:06
sera
一般會員


發表:10
回覆:19
積分:5
註冊:2003-06-02

發送簡訊給我
#11 引用回覆 回覆 發表時間:2003-06-05 13:08:43 IP:211.72.xxx.xxx 未訂閱
problemman: 因為回老家過端午,來不及跟你說~~我已照你的方法把問題解決了,謝謝你!
系統時間:2024-11-11 3:22:34
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!