請問如何搜尋ACCESS非文字欄位的值呢? |
尚未結案
|
sue690226
一般會員 發表:23 回覆:15 積分:7 註冊:2004-07-24 發送簡訊給我 |
各位工程師好:小弟請問一下今天我由
"SELECT ID From File_Queue 'COMPUTE MIN(ID)'";
中得到一個我要的ID最小值
再來我希望由我得到的最小值再去和另外一個欄位State去搜尋出我要的那比資料。
請問我該怎麼作呢?
我已經可以得到最小值但是我要重新尋找時ID的部分都會說我的型態和資料庫的不一樣。
以下是我的部分程式請各位幫我看看~謝謝
AnsiString Temp;
long Value;
Temp="SELECT ID From File_Queue 'COMPUTE MIN(ID)'";
DM->ADOQuery1->Close();
DM->ADOQuery1->SQL->Clear();
DM->ADOQuery1->SQL->Add(Temp);
DM->ADOQuery1->Open();
Value=DM->ADOQuery1->FieldByName("ID")->AsInteger;
Temp="SELECT * From File_Queue WHERE ID=' Value ' AND State='PEN'";
DM->ADOQuery1->Close();
DM->ADOQuery1->SQL->Clear();
DM->ADOQuery1->SQL->Add(Temp);
DM->ADOQuery1->Open();
|
allenchan
資深會員 發表:10 回覆:306 積分:283 註冊:2004-01-06 發送簡訊給我 |
AnsiString Temp;
long Value;
Temp="SELECT ID From File_Queue 'COMPUTE MIN(ID)'";
DM->ADOQuery1->Close();
DM->ADOQuery1->SQL->Clear();
DM->ADOQuery1->SQL->Add(Temp);
DM->ADOQuery1->Open();
Value=DM->ADOQuery1->FieldByName("ID")->AsInteger;
|
huanyuan
一般會員 發表:18 回覆:48 積分:18 註冊:2003-07-14 發送簡訊給我 |
上面
引言: 各位工程師好:小弟請問一下今天我由 "SELECT ID From File_Queue 'COMPUTE MIN(ID)'"; 中得到一個我要的ID最小值 再來我希望由我得到的最小值再去和另外一個欄位State去搜尋出我要的那比資料。 請問我該怎麼作呢? 我已經可以得到最小值但是我要重新尋找時ID的部分都會說我的型態和資料庫的不一樣。 以下是我的部分程式請各位幫我看看~謝謝 AnsiString Temp; long Value; Temp="SELECT ID From File_Queue 'COMPUTE MIN(ID)'"; DM->ADOQuery1->Close(); DM->ADOQuery1->SQL->Clear(); DM->ADOQuery1->SQL->Add(Temp); DM->ADOQuery1->Open(); Value=DM->ADOQuery1->FieldByName("ID")->AsInteger; Temp="SELECT * From File_Queue WHERE ID=" IntToStr(Value) " AND State='PEN'"; DM->ADOQuery1->Close(); DM->ADOQuery1->SQL->Clear(); DM->ADOQuery1->SQL->Add(Temp); DM->ADOQuery1->Open();上面紅色的部份改看看這樣可不可以...試看看囉... 發表人 - huanyuan 於 2004/12/17 00:38:11 |
sue690226
一般會員 發表:23 回覆:15 積分:7 註冊:2004-07-24 發送簡訊給我 |
引言: 上面引言: 各位工程師好:小弟請問一下今天我由 "SELECT ID From File_Queue 'COMPUTE MIN(ID)'"; 中得到一個我要的ID最小值 再來我希望由我得到的最小值再去和另外一個欄位State去搜尋出我要的那比資料。 請問我該怎麼作呢? 我已經可以得到最小值但是我要重新尋找時ID的部分都會說我的型態和資料庫的不一樣。 以下是我的部分程式請各位幫我看看~謝謝 AnsiString Temp; long Value; Temp="SELECT ID From File_Queue 'COMPUTE MIN(ID)'"; DM->ADOQuery1->Close(); DM->ADOQuery1->SQL->Clear(); DM->ADOQuery1->SQL->Add(Temp); DM->ADOQuery1->Open(); Value=DM->ADOQuery1->FieldByName("ID")->AsInteger; Temp="SELECT * From File_Queue WHERE ID=" IntToStr(Value) " AND State='PEN'"; DM->ADOQuery1->Close(); DM->ADOQuery1->SQL->Clear(); DM->ADOQuery1->SQL->Add(Temp); DM->ADOQuery1->Open();上面紅色的部份改看看這樣可不可以...試看看囉... 對不起~這樣子不可以因為 我的資料庫內ID是長整數所以不可以轉成字串 發表人 - huanyuan 於 2004/12/17 00:38:11 |
allenchan
資深會員 發表:10 回覆:306 積分:283 註冊:2004-01-06 發送簡訊給我 |
Temp="SELECT * From File_Queue WHERE ID=" IntToStr(Value) " AND State='PEN'"; IntToStr 只是為了將讓您做字串相加用。 不然你這樣用好了: AnsiString Temp;
Temp.sprintf("SELECT * From File_Queue WHERE ID=%d AND State='PEN'", Value); 發表人 - allenchan 於 2004/12/17 01:44:30
|
folkchen
高階會員 發表:9 回覆:232 積分:173 註冊:2003-10-09 發送簡訊給我 |
huanyuan大大的方式應該不會不行呀
你有真的試RUN過嗎
因為資料庫中的型態是取決於
Temp="SELECT * From File_Queue WHERE ID=" IntToStr(Value) " AND State='PEN'";
ID= 的後面的值有沒有加單引號
而不是 Value 變數本身是什麼型態 你發生錯誤的地方是BCB告訴你的,所以是BCB在串字串TEMP時發生的錯誤
因為TEMP是AnsiString,但是Value是Int,所以BCB不接受,而huanyuan的方式是可以解決你的問題才對 SQL本身的型態錯誤,在編譯時不會發生,只有在執行到那一行時才會發生錯誤
而allenchan大大的第一個貼文,不小心在ID=的後面多了單引號,所以會造成SQL的型態不符 所以你先確定一下是在執行時出現型態錯誤,還是編譯時出現型態錯誤
才能解決問題 發表人 - folkchen 於 2004/12/17 08:40:57
|
sue690226
一般會員 發表:23 回覆:15 積分:7 註冊:2004-07-24 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |