全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:1146
推到 Plurk!
推到 Facebook!

請問一個簡單的資料篩選問題

尚未結案
chaochichen
一般會員


發表:9
回覆:4
積分:2
註冊:2005-07-03

發送簡訊給我
#1 引用回覆 回覆 發表時間:2005-07-28 20:20:45 IP:140.117.xxx.xxx 未訂閱
ListBox1裡頭有a筆資料 都是字串 Memo2裡頭有b筆資料 也都是字串 我想要把ListBox1的值跟Memo2的值一個一個做比較 如果ListBox1裡的值跟Memo2的值有一樣的 就放進ListBox2裡 剩下的沒有一樣的就放到ListBox3裡頭 我目前只能做到把比對出來一樣的資料放到ListBox2裡 剩下的不一樣的資料放進ListBox3時就有問題了 以下是我目前的部份程式碼 麻煩高手們幫我看看,謝謝~~ for a:=0 to ListBox1.Items.Count-1 do for b:=0 to Memo2.Lines.Count-1 do begin if ListBox1.Items.Strings[a]=Memo2.Lines.Strings[b] then ListBox2.Items.Add(ListBox1.Items.Strings[a]); end; end;
Stallion
版主


發表:52
回覆:1600
積分:1995
註冊:2004-09-15

發送簡訊給我
#2 引用回覆 回覆 發表時間:2005-07-28 20:48:43 IP:211.22.xxx.xxx 未訂閱
var
found : boolean;     found := false;
 for a:=0 to ListBox1.Items.Count-1 do
 begin
  for b:=0 to Memo2.Lines.Count-1 do
  begin
   if ListBox1.Items.Strings[a]=Memo2.Lines.Strings[b] then
   begin
    ListBox2.Items.Add(ListBox1.Items.Strings[a]);
    found := true;
   end;
  end;
  if not found 
    ListBox3.Items.Add(ListBox1.Items.Strings[a]);
  found := false; // reset found
 end;
------------------- 學,然後知不足。
chaochichen
一般會員


發表:9
回覆:4
積分:2
註冊:2005-07-03

發送簡訊給我
#3 引用回覆 回覆 發表時間:2005-07-28 21:13:42 IP:140.117.xxx.xxx 未訂閱
引言:
var
found : boolean;     found := false;
 for a:=0 to ListBox1.Items.Count-1 do
 begin
  for b:=0 to Memo2.Lines.Count-1 do
  begin
   if ListBox1.Items.Strings[a]=Memo2.Lines.Strings[b] then
   begin
    ListBox2.Items.Add(ListBox1.Items.Strings[a]);
    found := true;
   end;
  end;
  if not found 
    ListBox3.Items.Add(ListBox1.Items.Strings[a]);
  found := false; // reset found
 end;
------------------- 學,然後知不足。
謝謝您, 再請問一下, 若是Memo2中的資料是某個ADOQuery印出來的內容 這樣其實直接讓ListBox1的資料直接去跟資料庫的欄位一筆一筆做比較似乎比較有效率, 那我該怎麼做才能達到同樣的篩選效果呢?
Stallion
版主


發表:52
回覆:1600
積分:1995
註冊:2004-09-15

發送簡訊給我
#4 引用回覆 回覆 發表時間:2005-07-28 21:34:49 IP:211.22.xxx.xxx 未訂閱
 var
   found : boolean;     if ( ADOQuery.Recordset.RecordCount > 0 ) then
 begin
  While not AQuery.Recordset.eof do
  begin 
   for a:=0 to Memo2.Lines.Count-1 do
   begin
    if ADOQuery.FieldValues['欄位名稱'] = Memo2.Lines.Strings[a] then do
    begin
     ListBox2.Items.Add(ADOQuery.FieldValues['欄位名稱']);
     found := true;
    end;
   end;
   if not found then
     ListBox3.Items.Add(ADOQuery.FieldValues['欄位名稱']);
   found := false;
   ADOQuery.Next;
  end;
 end;
------------------- 學,然後知不足。 發表人 - stallion 於 2005/07/28 21:36:00
chaochichen
一般會員


發表:9
回覆:4
積分:2
註冊:2005-07-03

發送簡訊給我
#5 引用回覆 回覆 發表時間:2005-07-29 00:11:57 IP:140.117.xxx.xxx 未訂閱
引言:
 var
   found : boolean;     if ( ADOQuery.Recordset.RecordCount > 0 ) then
 begin
  While not AQuery.Recordset.eof do
  begin 
   for a:=0 to Memo2.Lines.Count-1 do
   begin
    if ADOQuery.FieldValues['欄位名稱'] = Memo2.Lines.Strings[a] then do
    begin
     ListBox2.Items.Add(ADOQuery.FieldValues['欄位名稱']);
     found := true;
    end;
   end;
   if not found then
     ListBox3.Items.Add(ADOQuery.FieldValues['欄位名稱']);
   found := false;
   ADOQuery.Next;
  end;
 end;
------------------- 學,然後知不足。 發表人 - stallion 於 2005/07/28 21:36:00
嗯...我的意思是說 將ListBox1裡頭的所有值 直接與ADOQuery1的所有欄位值去比較 有一樣的就放到ListBox2裡,其他不一樣的就放到ListBox3裡頭 所以這樣程式碼應該就沒有Memo2了 這樣的話應該怎麼做呢
Stallion
版主


發表:52
回覆:1600
積分:1995
註冊:2004-09-15

發送簡訊給我
#6 引用回覆 回覆 發表時間:2005-07-29 06:46:01 IP:211.22.xxx.xxx 未訂閱
大同小異~ < class="code"> var found : boolean; if ( ADOQuery.Recordset.RecordCount > 0 ) then begin While not AQuery.Recordset.eof do begin for a:=0 to ListBox1.Items.Count-1 do begin if ADOQuery.FieldValues['欄位名稱'] = ListBox1.Items.Strings[a] then do begin ListBox2.Items.Add(ADOQuery.FieldValues['欄位名稱']); found := true; end; end; if not found then ListBox3.Items.Add(ADOQuery.FieldValues['欄位名稱']); found := false; ADOQuery.Next; end; end; ------------------- 學,然後知不足。
likush
高階會員


發表:5
回覆:235
積分:103
註冊:2002-10-08

發送簡訊給我
#7 引用回覆 回覆 發表時間:2005-07-29 10:08:21 IP:218.163.xxx.xxx 未訂閱
for I:=0 to ListBox1.Items.Count-1 do
  begin
    if  ADOQuery.Locate('欄位名稱', ListBox1.Items.Strings[a], [loCaseInsensitive, loPartialkey]) then 
      ListBox2.Items.Add(ADOQuery.FieldValues['欄位名稱'])
    Else
      ListBox3.Items.Add(ADOQuery.FieldValues['欄位名稱']);                                      
  end;
========================= 讀萬卷書~不如來K.TOP走一遭 ========================= 發表人 - likush 於 2005/07/29 10:11:26
系統時間:2024-11-23 13:01:06
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!