取出多筆相符合之資料 |
尚未結案
|
Paicaso
中階會員 ![]() ![]() ![]() 發表:140 回覆:124 積分:52 註冊:2002-09-04 發送簡訊給我 |
請問如例,我欲取出所有FieldA為001,之FieldB之值為何
Index FieldA FieldB
----- ------ -------
1 001 A01
2 001 B01
3 002 C01
我用以下方式,應該只能取出最後一筆(FieldB為B01),所以結果是錯的,請問我應該要修正何處?
Query1 := TQUERY.Create(APPLICATION.Owner);
Query1.DatabaseName := 'Product';
Query1.SQL.Clear;
Query1.SQL.Add('SELECT * FROM DATA_B ');
Query1.SQL.Add('WHERE FiledA = ''' STR1 ''' '); //STR1為FieldA之輸入值
Query1.CLOSE;
Query1.OPEN;
IF Query1.Eof = FALSE THEN
Begin
N_val := Query1.FieldByName('FiledB').AsString; //取出值
End;
這樣只有取出第一個項目而已,可否請先進朋友們,給小弟指點,Thanks
|
hagar
版主 ![]() ![]() ![]() ![]() ![]() ![]() 發表:143 回覆:4056 積分:4445 註冊:2002-04-14 發送簡訊給我 |
begin Query1 := TQUERY.Create(APPLICATION.Owner); Query1.DatabaseName := 'Product'; Query1.SQL.Clear; Query1.SQL.Add('SELECT * FROM DATA_B '); Query1.SQL.Add('WHERE FiledA = ''' STR1 ''' '); Query1.CLOSE; Query1.OPEN; while not Query1.Eof THEN Begin N_val := Query1.FieldByName('FiledB').AsString; //取出值 Query1.Next; // 指標移到 Query1 的下一筆 record End; end;--- 歡迎光臨 KTop 研究院 |
Paicaso
中階會員 ![]() ![]() ![]() 發表:140 回覆:124 積分:52 註冊:2002-09-04 發送簡訊給我 |
|
Paicaso
中階會員 ![]() ![]() ![]() 發表:140 回覆:124 積分:52 註冊:2002-09-04 發送簡訊給我 |
|
cashxin2002
版主 ![]() ![]() ![]() ![]() ![]() ![]() 發表:231 回覆:2555 積分:1937 註冊:2003-03-28 發送簡訊給我 |
您好!
while not Query1.Eof THEN Begin N_val := Query1.FieldByName('FiledB').AsString; Query1.Next; // 指標移到 Query1 的下一筆 record End;您可能有些誤解While...do語法的作用了, 在您的例子中hagar版主幫您改用While...do的語法, 其作用是做迴圈的處理, 即如果當前資料錄指針沒有到資料表最末筆資料錄(Query1.Eof)時, 即將FieldB欄位的值指定給N_val字串變數, 并做指針向下移動一筆(Query1.Next;)的動作, 也就是說反复的做一個動作, 直到指針移動到資料表的最末筆資料錄. 而并不是先算出筆數, 再用陣列方式. while not Query1.Eof THEN Begin N_val := Query1.FieldByName('FiledB').AsString; //取出值 關於取出值之利用我可以加在這行中媽?//當然可以! Query1.Next; // 指標移到 Query1 的下一筆 record End;參考看看! ===================== 努力,相信會獲得美麗! 忻晟
------
忻晟 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |