請問一個簡單的資料篩選問題 |
尚未結案
|
chaochichen
一般會員 發表:9 回覆:4 積分:2 註冊:2005-07-03 發送簡訊給我 |
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 發送簡訊給我 |
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 發送簡訊給我 |
引言:謝謝您, 再請問一下, 若是Memo2中的資料是某個ADOQuery印出來的內容 這樣其實直接讓ListBox1的資料直接去跟資料庫的欄位一筆一筆做比較似乎比較有效率, 那我該怎麼做才能達到同樣的篩選效果呢?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;------------------- 學,然後知不足。 |
Stallion
版主 發表:52 回覆:1600 積分:1995 註冊:2004-09-15 發送簡訊給我 |
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 發送簡訊給我 |
引言:嗯...我的意思是說 將ListBox1裡頭的所有值 直接與ADOQuery1的所有欄位值去比較 有一樣的就放到ListBox2裡,其他不一樣的就放到ListBox3裡頭 所以這樣程式碼應該就沒有Memo2了 這樣的話應該怎麼做呢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 |
Stallion
版主 發表:52 回覆:1600 積分:1995 註冊:2004-09-15 發送簡訊給我 |
大同小異~
< 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 發送簡訊給我 |
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 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |