線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:798
推到 Plurk!
推到 Facebook!

取出多筆相符合之資料

尚未結案
Paicaso
中階會員


發表:140
回覆:124
積分:52
註冊:2002-09-04

發送簡訊給我
#1 引用回覆 回覆 發表時間:2003-10-12 16:52:38 IP:61.59.xxx.xxx 未訂閱
請問如例,我欲取出所有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

發送簡訊給我
#2 引用回覆 回覆 發表時間:2003-10-12 17:29:13 IP:202.39.xxx.xxx 未訂閱
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

發送簡訊給我
#3 引用回覆 回覆 發表時間:2003-10-12 22:15:33 IP:61.59.xxx.xxx 未訂閱
謝謝您的指點.我大概了解,那關於N_val之取出值是否需要先算出有幾筆,並用陣列方式,否則是不是N_val還是最後一個值,我對於這一點還是有點模糊.請再與指教,謝謝 N_val[i] := Query1.FieldByName('FiledB').AsString;
Paicaso
中階會員


發表:140
回覆:124
積分:52
註冊:2002-09-04

發送簡訊給我
#4 引用回覆 回覆 發表時間:2003-10-12 22:18:52 IP:61.59.xxx.xxx 未訂閱
另外關於取出值之利用我可以加在下列紅色行中媽? while not Query1.Eof THEN   Begin     N_val := Query1.FieldByName('FiledB').AsString; //取出值     關於取出值之利用我可以加在這行中媽? Query1.Next; // 指標移到 Query1 的下一筆 record End;
cashxin2002
版主


發表:231
回覆:2555
積分:1937
註冊:2003-03-28

發送簡訊給我
#5 引用回覆 回覆 發表時間:2003-10-12 22:28:56 IP:63.84.xxx.xxx 未訂閱
您好!
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;
參考看看! ===================== 努力,相信會獲得美麗! 忻晟
------
忻晟
系統時間:2024-06-28 5:32:42
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!