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

請問在 ClientDataSet 甚樣可得一個 Field 的原 Table 名及 Field 名

缺席
Justmade
版主


發表:94
回覆:1934
積分:2030
註冊:2003-03-12

發送簡訊給我
#1 引用回覆 回覆 發表時間:2003-06-20 19:42:26 IP:218.16.xxx.xxx 未訂閱
DBExpress DataSnap SELECT CUSTNO AS ID FROM CUSTOMER AS CUST FieldName 會是 ID 請問除了自己分柝 SQL Statement 外有沒可能可以取得真 TableName 是 CUSTOMER 真FieldName 是 CUSTNO 因為我想要做一個 Data Dictionary 自動設好 Column Title 等等和給使用者自定 SQL。 謝謝。
timhuang
尊榮會員


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

發送簡訊給我
#2 引用回覆 回覆 發表時間:2003-06-20 21:42:07 IP:61.62.xxx.xxx 未訂閱
justmade 兄, 這應該是沒辦法的, 除了解析 sql command 以外, 是沒有取得原 table name 和 column name 的. 因為 sql command 是往資料庫送去, 而由資料庫回傳結果集, 然而我們已將 column 及 table 的 alias name 送入資料庫中了, 資料庫當然依照我們給定的名稱來組合結果集, 所以就傳回的結果集來看是沒有辦法得到原始的 column 及 table name 的.    例如:    select first_name + ' ' + last_name as user_name from member_table    時, user_name column 是由 first_name 及 last_name 組合而成的, 在結果集中僅會有 user_name 的 column name , 完全不會出現 first_name 及 last_name 的資訊的..    又如:    select case when sex='F' then '女' when sex='M' then '男' else '未知' end as sex from member_table    其中還用了 case.. statement 的狀況下, 就更複雜了, 要取得原始的 column name 就更不是那麼容易的事了, 尤其是     select case when ismember=1 then member_no else personal_id end as uid from member_table     這還是有可能為 member_no, 或是 personal_id 這兩種狀況呢...    愈說愈複雜了.. 
Mickey
版主


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

發送簡訊給我
#3 引用回覆 回覆 發表時間:2003-06-20 23:30:00 IP:218.32.xxx.xxx 未訂閱
好難喔...好像除了解析 > 害得大家傷腦筋... >
Justmade
版主


發表:94
回覆:1934
積分:2030
註冊:2003-03-12

發送簡訊給我
#4 引用回覆 回覆 發表時間:2003-06-21 08:58:01 IP:218.16.xxx.xxx 未訂閱
timhuang 兄說的複合的 Field 我當然知道不可能顯示真 TableName 及 FieldName 但對於一般的可 RequestLive 的我想 Delphi 是有資料的,因為他能自動組合成 Update SQL 等等 他總不會將上例變成 Update CUST Set ID = :ID 罷 不過,我想他這樣資料都在內部沒開放出來罷 Mickey 兄 我無意做 SQL Parser, 我只想做一個 簡單的多語言 Data Dictionary,對應 TableName.FieldName 按選定語言自動埴入 DisplayLabel 有沒有好建議呢?
timhuang
尊榮會員


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

發送簡訊給我
#5 引用回覆 回覆 發表時間:2003-06-21 12:01:14 IP:61.62.xxx.xxx 未訂閱
justmade 兄, 弟試了一下, 使用了 TUpdateSQL 元件, 發現它確實是會組成:    Update CUST Set ID = :ID     沒錯. 而造成 update 失敗的現象, 所以 TUpdateSQL 的自行產生 sql command 只是就該 TQuery 元件的 tfields 中來取得, 所以已是 alias name 而不是真實的 column name.  若是該 >"<
系統時間:2024-05-15 15:42:43
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!