全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:2026
推到 Plurk!
推到 Facebook!

一定要把Fields加入Query, Origin才會有值嗎?

答題得分者是:ccchen
binbinalia
一般會員


發表:14
回覆:23
積分:7
註冊:2003-11-05

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-02-03 22:23:15 IP:203.70.xxx.xxx 未訂閱
各位大大: 我在寫一個報表用的unit, 想抓出SQL SELECT欄位的對應中文名稱(有table專門記錄中文名稱), 動態填入報表的欄位Caption. 正在苦思如何知道SELECT的欄位屬那個table時, 發現TFields有一個Origin的屬性, 會記錄欄位所在資料庫及talbe, 稍加分解就能得到我要的資訊. 可是實做時發現, 如果design時沒把Fields加進TQuery元件裡, Origin就會沒有值. 這個有解嗎? 還是有其他方法可以取得以上資訊?
Fishman
尊榮會員


發表:120
回覆:1949
積分:2163
註冊:2006-10-28

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-02-04 09:10:02 IP:210.65.xxx.xxx 未訂閱
Hi:    binbinalia,關於這問題,你可以先參考以下這一篇討論 http://delphi.ktop.com.tw/topic.php?TOPIC_ID=44010 再者,如果你的 DataSet 有 CalCulated Field 時該如何? 因此如果不考慮 Table Name 而只使用 TField 的 FiledName 來轉換為中文,是否會簡單點 -------------------------------- 小弟才疏學淺,若有謬誤請不吝指教 --------------------------------
------
Fishman
ccchen
版主


發表:61
回覆:940
積分:1394
註冊:2002-04-15

發送簡訊給我
#3 引用回覆 回覆 發表時間:2004-02-04 09:20:58 IP:218.163.xxx.xxx 未訂閱
有一個文件中沒提到的class可以幫忙TQueryDescription可以找到origin 以下給你參考, 在run Time 傳入一query若原來無origin則將各欄位填入origin
procedure fixorigin(qry: TQuery);
var qdes: TQueryDescription;
    field:TField;
begin
  if qry.Active then
    if qry.Fields[0].origin = '' then begin
      qdes := TQueryDescription.Create(nil);  //create輔助之TQueryDescription
      try
        try
          qdes.Query := Qry;  //指向原query
          qdes.Open;
          qdes.First;
          while not qdes.Eof do begin
            field := qry.findfield(qdes['FIELDNAME']);
            if field <> nil then
              field.origin := qdes['TABLENAME']  '.'  qdes['FIELDNAME'];
            qdes.Next;
          end;
        except
        end;
      finally
        qdes.Free;
      end;
    end;
end;
binbinalia
一般會員


發表:14
回覆:23
積分:7
註冊:2003-11-05

發送簡訊給我
#4 引用回覆 回覆 發表時間:2004-02-04 11:48:46 IP:61.221.xxx.xxx 未訂閱
Fishman大大: 有想過規範在SELECT時ASSIGN欄名給它,但因UNIT是多人共用有人嫌麻煩,所以才想有無直接解析出SQL裡TABLE NAME的方法,查不到的再讓他們自己填. ccchen大大: 我用的是DELPHI 5.0,它沒有TQueryDescription這個元件耶!有其他類似元件嗎?
ccchen
版主


發表:61
回覆:940
積分:1394
註冊:2002-04-15

發送簡訊給我
#5 引用回覆 回覆 發表時間:2004-02-04 13:26:33 IP:218.163.xxx.xxx 未訂閱
引言: Fishman大大: 有想過規範在SELECT時ASSIGN欄名給它,但因UNIT是多人共用有人嫌麻煩,所以才想有無直接解析出SQL裡TABLE NAME的方法,查不到的再讓他們自己填. ccchen大大: 我用的是DELPHI 5.0,它沒有TQueryDescription這個元件耶!有其他類似元件嗎?
TQueryDescription不在元件盤上, 我也不確定是否在Delphi6才新增之Class 你可以uses DrTable再試試 (此unit不會自動uses)
binbinalia
一般會員


發表:14
回覆:23
積分:7
註冊:2003-11-05

發送簡訊給我
#6 引用回覆 回覆 發表時間:2004-02-04 14:13:32 IP:61.221.xxx.xxx 未訂閱
use DrTable後有work了! 感謝 ccchen大大~
系統時間:2024-05-20 0:01:29
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!