在下了MAX的SQL指令後,如何得到該欄位的值呢? |
答題得分者是:tech_state
|
jackwu
一般會員 發表:28 回覆:54 積分:16 註冊:2002-08-18 發送簡訊給我 |
各位:
如題,下了MAX的SQL指令後,我希望可以的到所選出的最大值,code如後。但是我的寫法有錯,因為會出現"Field 'ID' is of an unknown type",我應該要如何改呢?謝謝
UTStateQuery->SQL->Clear(); UTStateQuery->SQL->Add("SELECT MAX(ID) FROM UTState"); UTStateQuery->SQL->Add("VALUES (:ID)"); int index = UTStateQuery->Params->ParamByName("ID")->AsInteger; UTStateQuery->Params->ParseSQL(UTStateQuery->SQL->Text, true); UTStateQuery->ExecSQL();欄位ID為一個識別欄位數值不可覆寫 |
tech_state
版主 發表:44 回覆:638 積分:641 註冊:2003-02-10 發送簡訊給我 |
jackwu, 您好
sorry, 我看不太懂您的寫法。
不過,如果是要得到所選出的最大值,我的寫法如下:
< class="code">
UTStateQuery->Close();
UTStateQuery->SQL->Clear();
UTStateQuery->SQL->Add("SELECT MAX(ID) as Max_ID FROM UTState");
UTStateQuery->Open();
int index = UTStateQuery->FieldByName("Max_ID")->AsInteger;
ShowMessage(index);
不知這樣是否符合您的需求? =================================
涵養怒中氣。謹防順口言。留心忙裡錯。珍惜有時錢。
是非終日有,不聽自然無
天下本無事,庸人自擾之
|
timhuang
尊榮會員 發表:78 回覆:1815 積分:1608 註冊:2002-07-15 發送簡訊給我 |
Hi, 可以利用 tech_state 版主的作法. 給一個 alias 的 column name 來進行, 若是沒有 alias column name 的話, 可以直接使用 k = UTStateQuery->Fields->Fields[0]->AsInteger; 來取得該 max 值. 另外也要注意的地方就是 ExecSQL 和 Open 的問題.
若是有傳回資料的話, 必須要使用 Open 來取得, ExecSQL 是使用在 Update, Insert, Delete 等操作性的語法. 詳情請參閱其他討論文章!!
|
jackwu
一般會員 發表:28 回覆:54 積分:16 註冊:2002-08-18 發送簡訊給我 |
引言: jackwu, 您好 sorry, 我看不太懂您的寫法。 不過,如果是要得到所選出的最大值,我的寫法如下: < class="code"> UTStateQuery->Close(); UTStateQuery->SQL->Clear(); UTStateQuery->SQL->Add("SELECT MAX(ID) as Max_ID FROM UTState"); UTStateQuery->Open(); int index = UTStateQuery->FieldByName("Max_ID")->AsInteger; ShowMessage(index); 不知這樣是否符合您的需求?謝謝tech_state 依照妳的方式已經可以使用 不過我想要提出問題 當使用UTStateQuery->Open();可以很正常的執行,但如果將Open改為ExecSQL時 就會出現"Field Max_ID not Found",是因為Open的指令會傳回資料結果集(Result DataSet)的關係,才能找到Max_ID嗎? |
jackwu
一般會員 發表:28 回覆:54 積分:16 註冊:2002-08-18 發送簡訊給我 |
引言: Hi, 可以利用 tech_state 版主的作法. 給一個 alias 的 column name 來進行, 若是沒有 alias column name 的話, 可以直接使用 k = UTStateQuery->Fields->Fields[0]->AsInteger; 來取得該 max 值. 另外也要注意的地方就是 ExecSQL 和 Open 的問題. 若是有傳回資料的話, 必須要使用 Open 來取得, ExecSQL 是使用在 Update, Insert, Delete 等操作性的語法. 詳情請參閱其他討論文章!!剛剛回完文章才發現timhuang大大已經將我的疑惑解決 謝謝timhuang |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |