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

請問BCB在讀取資料庫的問題

尚未結案
kevinpeng
一般會員


發表:7
回覆:7
積分:2
註冊:2003-12-10

發送簡訊給我
#1 引用回覆 回覆 發表時間:2003-12-16 19:21:34 IP:211.21.xxx.xxx 未訂閱
請問 我在BCB中讀取 int i = DBEdit->Text.c_str 的時候, 喔卻出現了一長串的數字,而不是我所要的欄位中的值,譬如說:DBEdit在Form中所顯示的數字是10,但是i卻不是10,請問要怎麼樣才可以得到DBEdit中相對在資料庫中相同型態的值呢? 還有,請問有什麼方法可以讀取到目前資料庫的所有的資料. 感謝各位大大 Kevin
海星
高階會員


發表:41
回覆:217
積分:106
註冊:2003-01-09

發送簡訊給我
#2 引用回覆 回覆 發表時間:2003-12-16 19:31:38 IP:61.59.xxx.xxx 未訂閱
正確用法應該是 i = Table1->FieldByName("abc")->AsInteger; 其中如果你是用SQL 則Table 改成 Query1, abc 是你要取出的欄位名稱.
kevinpeng
一般會員


發表:7
回覆:7
積分:2
註冊:2003-12-10

發送簡訊給我
#3 引用回覆 回覆 發表時間:2003-12-16 19:46:30 IP:211.21.xxx.xxx 未訂閱
那如果是用TADOConnection,TADODataSet,TData時要怎麼處理呢?
海星
高階會員


發表:41
回覆:217
積分:106
註冊:2003-01-09

發送簡訊給我
#4 引用回覆 回覆 發表時間:2003-12-16 20:07:05 IP:61.59.xxx.xxx 未訂閱
還不是一樣?? TADOQuery 和 TAOTable 跟前面講的 TTable 都是繼承 TDataSet 來的,所以祖先所擁有的屬性,下面的元件都可以套用一模一樣的東西, 所以寫法也是一樣 i = ADOQuery1->FieldByName("abc")->AsInteger; 詳情自己看 TDataSet::FieldByName 說明..help裡面有講的很清楚..
kevinpeng
一般會員


發表:7
回覆:7
積分:2
註冊:2003-12-10

發送簡訊給我
#5 引用回覆 回覆 發表時間:2003-12-17 19:41:34 IP:211.21.xxx.xxx 未訂閱
不好意思在問一下 這是我的程式碼: class Pad{ private: string Name; public: void setName(string N); string getName(); } vector vPad; vPad[PadIndex].setName((string)ADOTable1->FieldByName("Name")->AsString); 可是卻出現下面的錯誤訊息: [C Error] db.cpp(65): E2285 Could not find a match for 'string::basic_string(AnsiString)' [C Error] db.cpp(65): E2031 Cannot cast from 'AnsiString' to 'string' 我試了很多方式還是找不出原因!! 請各位大大幫忙 Kevin
folkchen
高階會員


發表:9
回覆:232
積分:173
註冊:2003-10-09

發送簡訊給我
#6 引用回覆 回覆 發表時間:2003-12-18 08:44:21 IP:211.20.xxx.xxx 未訂閱
引言: 不好意思在問一下 這是我的程式碼: class Pad{ private: string Name; public: void setName(string N); string getName(); } vector vPad; vPad[PadIndex].setName((string)ADOTable1->FieldByName("Name")->AsString); 可是卻出現下面的錯誤訊息: [C Error] db.cpp(65): E2285 Could not find a match for 'string::basic_string(AnsiString)' [C Error] db.cpp(65): E2031 Cannot cast from 'AnsiString' to 'string' 我試了很多方式還是找不出原因!! 請各位大大幫忙 Kevin
vPad[PadIndex].setName((string)ADOTable1->FieldByName("Name")->AsString); 中 ADOTable1->FieldByName("Name") 的資料 你用了(string)又用->AsString 似乎沒有必要 是否去除(string)試試 P.S:我用的是BCB,不太懂VC,錯了不要打我 CCC
kevinpeng
一般會員


發表:7
回覆:7
積分:2
註冊:2003-12-10

發送簡訊給我
#7 引用回覆 回覆 發表時間:2003-12-18 08:52:11 IP:211.21.xxx.xxx 未訂閱
我用的也是BCB 若是把->AsString 去掉的話 會出現 [C Error] db.cpp(65): E2285 Could not find a match for 'string::basic_string(TField *)' [C Error] db.cpp(65): E2031 Cannot cast from 'TField *' to 'string'
GaryKao99
中階會員


發表:46
回覆:102
積分:54
註冊:2002-08-23

發送簡訊給我
#8 引用回覆 回覆 發表時間:2003-12-18 09:38:38 IP:210.201.xxx.xxx 未訂閱
引言: 不好意思在問一下 這是我的程式碼: class Pad{ private: string Name; public: void setName(string N); string getName(); } vector vPad; vPad[PadIndex].setName((string)ADOTable1->FieldByName("Name")->AsString); 可是卻出現下面的錯誤訊息: [C Error] db.cpp(65): E2285 Could not find a match for 'string::basic_string(AnsiString)' [C Error] db.cpp(65): E2031 Cannot cast from 'AnsiString' to 'string' 我試了很多方式還是找不出原因!! 請各位大大幫忙 Kevin
vPad[PadIndex].setName((string)ADOTable1->FieldByName("Name")->AsString);
改成
vPad[PadIndex].setName((AnsiString)ADOTable1->FieldByName("Name")->AsString);
 
試試看
kevinpeng
一般會員


發表:7
回覆:7
積分:2
註冊:2003-12-10

發送簡訊給我
#9 引用回覆 回覆 發表時間:2003-12-18 10:09:39 IP:211.21.xxx.xxx 未訂閱
我最後是用 vPad[PadIndex].setName(ADOTable1->FieldByName("Name")->AsString.c_str());
kevinpeng
一般會員


發表:7
回覆:7
積分:2
註冊:2003-12-10

發送簡訊給我
#10 引用回覆 回覆 發表時間:2003-12-18 10:10:23 IP:211.21.xxx.xxx 未訂閱
我最後是用 vPad[PadIndex].setName(ADOTable1->FieldByName("Name")->AsString.c_str()); 感謝各位大大給我的幫助 謝謝 Kevin
系統時間:2024-05-02 8:03:33
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!