ADOQuery->Post問題 |
答題得分者是:ko
|
ttnnrsseb
中階會員 發表:31 回覆:77 積分:51 註冊:2004-11-22 發送簡訊給我 |
請教各位先進,
ADOQuery用sql語法Select某一欄位,然後再對ADOQuery用Edit、Post修改,這樣是錯的嗎? 因為我只要改到單一欄位,想說不用Select *,但是沒用Select * 確實會出錯。 例子如下: [code cpp] ADOT->Active=false; ADOT->TableName="ANo"; ADOT->Active=true; ADOQ1->Close(); ADOQ1->SQL->Clear(); ADOQ1->SQL->Add("select ANo from AREA"); //ADOQ1->SQL->Add("select * from AREA"); ADOQ1->Open(); ADOQ1->First(); ADOT->First(); while(!ADOT->Eof) { ADOQ1->Edit(); ADOQ1->FieldByName("ANo")->Value=ADOT->FieldByName("ANo")->Value; ADOQ1->Post(); ADOQ1->Next(); ADOT->Next(); } [/code] 編輯記錄
ttnnrsseb 重新編輯於 2010-08-09 12:59:25, 註解 無‧
|
herbert2
尊榮會員 發表:58 回覆:640 積分:894 註冊:2004-04-16 發送簡訊給我 |
|
ttnnrsseb
中階會員 發表:31 回覆:77 積分:51 註冊:2004-11-22 發送簡訊給我 |
感謝先進的回覆,SQL Monitor只限BDE,我是使用ADO的方式。
我寫了一個BDE的程式來測試,結果竟然不會有錯誤。 資料表中不只一個欄位。 SQL Monitor也沒秀什麼訊息。 [code cpp] Query1->RequestLive=true; Query1->Close(); Query1->SQL->Clear(); Query1->SQL->Add(select ANo from AREA.db); Query1->Open(); Query1->Edit(); Query1->FieldByName("ANo")->AsString = "test123"; Query1->Post(); [/code]
編輯記錄
ttnnrsseb 重新編輯於 2010-08-12 14:52:06, 註解 無‧
|
老大仔
尊榮會員 發表:78 回覆:837 積分:1088 註冊:2006-07-06 發送簡訊給我 |
雖然我不懂C++Builder...
但我還是想要請問 照您的語法來看 ANo應該是個資料表吧 那ADOT->TableName="ANo"; 這個不是應該要指向資料表嗎??? 怎麼您好像是指向欄位去了? 還是您的ADOT中的ANo也是個資料庫@@? 我只是好奇問一問....>"< ===================引 用 ttnnrsseb 文 章=================== 請教各位先進, ADOQuery用sql語法Select某一欄位,然後再對ADOQuery用Edit、Post修改,這樣是錯的嗎? 因為我只要改到單一欄位,想說不用Select *,但是沒用Select * 確實會出錯。 例子如下: [code cpp] ADOT->Active=false; ADOT->TableName="ANo"; ADOT->Active=true; ADOQ1->Close(); ADOQ1->SQL->Clear(); ADOQ1->SQL->Add("selectANo from AREA"); //ADOQ1->SQL->Add("select* from AREA"); ADOQ1->Open(); ADOQ1->First(); ADOT->First(); while(!ADOT->Eof) { ADOQ1->Edit(); ADOQ1->FieldByName("ANo")->Value=ADOT->FieldByName("ANo")->Value; ADOQ1->Post(); ADOQ1->Next(); ADOT->Next(); } [/code] |
ttnnrsseb
中階會員 發表:31 回覆:77 積分:51 註冊:2004-11-22 發送簡訊給我 |
hi 老大仔,
AREA是資料表,ANo是其中的一個欄位。 所以SQL的語法我是寫select ANo(欄位) from AREA(資料表) ===================引 用 老大仔 文 章=================== 雖然我不懂C Builder... 但我還是想要請問 照您的語法來看 ANo應該是個資料表吧 那ADOT->TableName="ANo"; 這個不是應該要指向資料表嗎??? 怎麼您好像是指向欄位去了? 還是您的ADOT中的ANo也是個資料庫@@? 我只是好奇問一問....>"< ===================引 用 ttnnrsseb 文 章=================== 請教各位先進, ADOQuery用sql語法Select某一欄位,然後再對ADOQuery用Edit、Post修改,這樣是錯的嗎? 因為我只要改到單一欄位,想說不用Select *,但是沒用Select * 確實會出錯。 例子如下: [code cpp] ADOT->Active=false; ADOT->TableName="ANo"; ADOT->Active=true; ADOQ1->Close(); ADOQ1->SQL->Clear(); ADOQ1->SQL->Add("selectANo from AREA"); //ADOQ1->SQL->Add("select* from AREA"); ADOQ1->Open(); ADOQ1->First(); ADOT->First(); while(!ADOT->Eof) { ADOQ1->Edit(); ADOQ1->FieldByName("ANo")->Value=ADOT->FieldByName("ANo")->Value; ADOQ1->Post(); ADOQ1->Next(); ADOT->Next(); } [/code] |
老大仔
尊榮會員 發表:78 回覆:837 積分:1088 註冊:2006-07-06 發送簡訊給我 |
|
ttnnrsseb
中階會員 發表:31 回覆:77 積分:51 註冊:2004-11-22 發送簡訊給我 |
sorry,這個是貼文的時候不小心改錯了。
感謝你的指正, 更正如下: [code cpp] ADOT->Active=false; ADOT->TableName="AREA"; ADOT->Active=true; ADOQ1->Close(); ADOQ1->SQL->Clear(); ADOQ1->SQL->Add("selectANo from AREA"); //ADOQ1->SQL->Add("select* from AREA"); ADOQ1->Open(); ADOQ1->First(); ADOT->First(); while(!ADOT->Eof) { ADOQ1->Edit(); ADOQ1->FieldByName("ANo")->Value=ADOT->FieldByName("ANo")->Value; ADOQ1->Post(); ADOQ1->Next(); ADOT->Next(); } [/code] |
hagar
版主 發表:143 回覆:4056 積分:4445 註冊:2002-04-14 發送簡訊給我 |
|
ttnnrsseb
中階會員 發表:31 回覆:77 積分:51 註冊:2004-11-22 發送簡訊給我 |
版主您好,
我的ADO是使用Access當資料庫, 錯誤訊息是 之前有個討論也是這個錯誤訊息, http://delphi.ktop.com.tw/board.php?cid=30&fid=66&tid=28708 但他是因為select三個欄位,卻更新了十個欄位。 我select一個欄位,也只更新那一個欄位。 現在我用select *是可以避免問題發生,只是想請教先進們是不是有觀念上的不對。 謝謝~ |
ko
資深會員 發表:28 回覆:785 積分:444 註冊:2002-08-14 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |