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

取出SQL中使用的tables

尚未結案
degr
一般會員


發表:22
回覆:36
積分:21
註冊:2002-03-25

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-04-21 17:43:03 IP:61.221.xxx.xxx 未訂閱
大大們好.. 請問一件事...我能力未及的問題... query 的SQL 是 關聯很多tables 跟欄位 今天想由 關聯欄位中.取出 tables name 出來 放置在 combobox1.items 中 tables_name.fielsName 例如.. 訂單主檔.訂單編號 客戶主檔.客戶編號 .. .. 可以取的出來嗎... 謝謝
timhuang
尊榮會員


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

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-04-21 18:19:10 IP:203.95.xxx.xxx 未訂閱
Hi, 請使用 TADOConnection 或 TDatabase 的 GetTableNames function 即可!
Chance36
版主


發表:31
回覆:1033
積分:792
註冊:2002-12-31

發送簡訊給我
#3 引用回覆 回覆 發表時間:2004-04-21 18:31:45 IP:211.20.xxx.xxx 未訂閱
degr 你好 參考以下連結,應該是你要的 http://delphi.ktop.com.tw/topic.php?topic_id=32752 但唯一的不幸是,除了自行分析SQL指令之外,目前好像沒有解決方案,至於要自行解析SQL指令,是滿麻煩的事,以下幾個元件有此功能但都不僅理想,你可參考看看或在本討論區下SQL Parser搜尋 http://delphi.ktop.com.tw/topic.php?topic_id=17472 http://delphi.ktop.com.tw/topic.php?topic_id=17469 http://delphi.ktop.com.tw/topic.php?topic_id=17629
Mickey
版主


發表:77
回覆:1882
積分:1390
註冊:2002-12-11

發送簡訊給我
#4 引用回覆 回覆 發表時間:2004-04-21 21:13:38 IP:218.32.xxx.xxx 未訂閱
degr 你好:    曾經改寫 DBCommon 的 GetTableNameFromSQL function, 參考看看.    
uses DBCommon;    procedure GetSQLTableNames(const SQL:string;var SQLTableList: TStrings);
var
  TableStart,FSelect: boolean;
  Msg,TableName: string;
  CurSection: TSQLToken;
  pMsg: PChar;
begin
  Msg := StringReplace(SQL, #10#10, #32, [rfReplaceAll]);
  Msg := StringReplace(Msg, #13#10, #32, [rfReplaceAll]);
  FSelect := (pos('select'#32,ansilowercase(Msg))=1) and
             (pos('into'#32,ansilowercase(Msg))=0);
  SQLTableList.Clear;
  if FSelect then
  begin
     pMsg := PChar(Msg);
     CurSection := stUnknown;
     TableStart := False;
     while (CurSection<>stEnd) do begin
       CurSection := NextSQLToken(pMsg , TableName, CurSection);
       if (CurSection=stFrom) then TableStart := True;
       if (CurSection in [stWhere,stUnion]) then TableStart := False;
       if (TableStart) and (CurSection in [stTableName,stFieldName]) and
          (SQLTableList.IndexOf(TableName)=-1)  then
         SQLTableList.Add(TableName);
     end;
  end;
end;
系統時間:2024-06-29 9:02:26
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!