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

BCB6 sql語法 select 欄位 as 更名成WideString

答題得分者是:aftcast
ttnnrsseb
中階會員


發表:31
回覆:77
積分:51
註冊:2004-11-22

發送簡訊給我
#1 引用回覆 回覆 發表時間:2011-06-24 19:54:42 IP:220.229.xxx.xxx 訂閱
請教各位先進,
我用BCB6的ADOQuery,要利用Select 欄位 as 新欄名(
WideString) from Table

因為ADOQuery->SQL->Add(AnsiString),所以想利用參數的方式,
WideString WStr = WideString("XXX");
ADOQuery->Parameters->CreateParameter("WStr",ftWideString,pdInput,100,WStr);
結果
"select 欄位 as :WStr from Table" 會錯誤!

請問 as之後是不是不能接參數?
如果我要更改成WideString的名稱,有什麼其它方式嗎?
謝謝
GrandRURU
站務副站長


發表:240
回覆:1680
積分:1874
註冊:2005-06-21

發送簡訊給我
#2 引用回覆 回覆 發表時間:2011-06-24 22:57:01 IP:111.249.xxx.xxx 未訂閱
SELECT區塊是不能用參數的
資料庫的格式是建資料庫時就定義好的,所以就算DELPHI存的不是UNICODE,寫進去也會被轉成UNICODE

以上

===================引 用 ttnnrsseb 文 章===================
請教各位先進,
我用BCB6的ADOQuery,要利用Select 欄位 as 新欄名(WideString)from Table

因為ADOQuery->SQL->Add(AnsiString),所以想利用參數的方式,
WideString WStr = WideString("XXX");
ADOQuery->Parameters->CreateParameter("WStr",ftWideString,pdInput,100,WStr);
結果
"select 欄位 as :WStr from Table" 會錯誤!

請問 as之後是不是不能接參數?
如果我要更改成WideString的名稱,有什麼其它方式嗎?
謝謝
ttnnrsseb
中階會員


發表:31
回覆:77
積分:51
註冊:2004-11-22

發送簡訊給我
#3 引用回覆 回覆 發表時間:2011-06-24 23:08:02 IP:180.218.xxx.xxx 訂閱
感謝您的回覆,
我要改的是欄位名的顯示,因為設計資料庫時會用英文先設欄位名。
但我要輸出成excel時,需將欄位名改成不同語系的顯示。

我改用ADOCommand是可以正常執行了,不過我要改的欄位名還是錯亂了!

WideString ws = WideString("select S_ID as [" TntMemo1->Lines->Strings[0] "], "
"S_Name as [" TntMemo1->Lines->Strings[1] "], "
"V as [" TntMemo1->Lines->Strings[2]
"] into [Sheet1] in 'E:\\bar.xls' 'Excel 8.0;' from T_OLD");
ADOCommand1->CommandText = ws;
ADOCommand1->Execute();

編輯記錄
ttnnrsseb 重新編輯於 2011-06-24 09:08:58, 註解 無‧
ttnnrsseb 重新編輯於 2011-06-24 09:12:47, 註解 無‧
ttnnrsseb 重新編輯於 2011-06-24 09:13:38, 註解 無‧
GrandRURU
站務副站長


發表:240
回覆:1680
積分:1874
註冊:2005-06-21

發送簡訊給我
#4 引用回覆 回覆 發表時間:2011-06-25 22:17:39 IP:111.249.xxx.xxx 未訂閱
 WideString轉AnsiString?

不會有問題嗎?

aftcast
站務副站長


發表:81
回覆:1485
積分:1763
註冊:2002-11-21

發送簡訊給我
#5 引用回覆 回覆 發表時間:2011-06-25 23:44:26 IP:122.126.xxx.xxx 訂閱
還是要再次申名一次: ADOQUERY,這個元件在2009版以前,都是無法處理unicode的問題的!
所以bcb6還是請用adodataset或是adocommand來處理才是正確的!

你的問題推斷是你這行寫錯:

WideString ws = WideString("select S_ID as [" TntMemo1->Lines->Strings[0] "], "
"S_Name as [" TntMemo1->Lines->Strings[1] "], "
"V as [" TntMemo1->Lines->Strings[2]
"] into [Sheet1] in 'E:\\bar.xls' 'Excel 8.0;' from T_OLD");

請改成


WideString ws = WideString("select S_ID as [") TntMemo1->Lines->Strings[0] WideString("], ")
WideString("S_Name as [") TntMemo1->Lines->Strings[1] WideString("], ")
WideString( "V as [") TntMemo1->Lines->Strings[2]
WideString( "] into [Sheet1] in 'E:\\bar.xls' 'Excel 8.0;' from T_OLD");

試看看



------


蕭沖
--All ideas are worthless unless implemented--

C++ Builder Delphi Taiwan G+ 社群
http://bit.ly/cbtaiwan
編輯記錄
aftcast 重新編輯於 2011-06-25 09:54:15, 註解 無‧
ttnnrsseb
中階會員


發表:31
回覆:77
積分:51
註冊:2004-11-22

發送簡訊給我
#6 引用回覆 回覆 發表時間:2011-06-26 15:00:35 IP:180.218.xxx.xxx 訂閱
 感謝前輩在假日中還幫我回覆,
不過情況跟我的寫法還是一樣,執行沒有問題。
只是欄位名的顯示如果是其它語言還是會變??
記錄的內容是正常的。

如下圖,第一列是欄位名稱,2~7是記錄的值


ttnnrsseb
中階會員


發表:31
回覆:77
積分:51
註冊:2004-11-22

發送簡訊給我
#7 引用回覆 回覆 發表時間:2011-06-27 09:46:20 IP:220.229.xxx.xxx 訂閱
我把程式在波蘭OS下執行,導出來的xls就可以正常顯示了!
感謝先進們的指導!
系統時間:2024-11-21 18:54:41
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!