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

關於資料互相比對

答題得分者是:channel
BOSS
中階會員


發表:70
回覆:79
積分:64
註冊:2006-11-01

發送簡訊給我
#1 引用回覆 回覆 發表時間:2003-07-15 12:55:16 IP:61.218.xxx.xxx 未訂閱
請問大大 假設我有兩個table資料 tableA date aa bb cc tableB data bb cc 將兩資料互相比對時將不相同資料取出 請問該如何做呢
channel
尊榮會員


發表:67
回覆:707
積分:854
註冊:2002-05-02

發送簡訊給我
#2 引用回覆 回覆 發表時間:2003-07-15 13:34:29 IP:211.21.xxx.xxx 未訂閱
引言: 請問大大 假設我有兩個table資料 tableA date aa bb cc tableB data bb cc 將兩資料互相比對時將不相同資料取出 請問該如何做呢
提供一個方法:
procedure TForm1.Button1Click(Sender: TObject);
var
  I, J: Integer;
  aDiff: Boolean;
begin
  aDiff := True;
  Table1.Close;
  Table1.TableName := 'tableA';
  Table1.Open;
  Table2.Close;
  Table2.TableName := 'tableB';
  Table2.Open;
  for I := 1 to Table1.RecordCount do
  begin
    Application.ProcessMessages;
    for J := 1 to Table2.RecordCount do
    begin
      if Table1.FieldByName('FieldName').AsString = Table2.FieldByName('FieldName').AsString then
      begin
        aDiff := False;
        Break;
      end;
      Table2.Next;
    end;
    if aDiff then
      ListBox1.Items.Add(Table1.FieldByName('FieldName').AsString);
    Table1.Next;
    Table2.First;
    aDiff := True;
  end;
  ShowMessage('比對完畢!已將不同的資料顯示在ListBox!');
end;
~小弟淺見,參考看看~
------
~小弟淺見,參考看看~
channel
尊榮會員


發表:67
回覆:707
積分:854
註冊:2002-05-02

發送簡訊給我
#3 引用回覆 回覆 發表時間:2003-07-15 14:29:30 IP:211.21.xxx.xxx 未訂閱
引言: 請問大大 假設我有兩個table資料 tableA date aa bb cc tableB data bb cc 將兩資料互相比對時將不相同資料取出 請問該如何做呢
上一篇的程式有點慢,小弟改良了一下,使用Locate的方式:
procedure TForm1.Button1Click(Sender: TObject);
var
  I, J: Integer;
  aDiff: Boolean;
begin
  aDiff := True;
  Table1.Close;
  Table1.TableName := 'tableA';
  Table1.Open;
  Table2.Close;
  Table2.TableName := 'tableB';
  Table2.Open;
  for I := 1 to Table1.RecordCount do
  begin
    Application.ProcessMessages;
    if Table2.Locate('FieldName', Table1.FieldByName('FieldName').AsString, []) then
      aDiff := False;
    if aDiff then
      ListBox1.Items.Add(Table1.FieldByName('FieldName').AsString);
    Table1.Next;
    aDiff := True;
  end;
  ShowMessage('比對完畢!已將不同的資料顯示在ListBox!');
end;
~小弟淺見,參考看看~ 發表人 - channel 於 2003/07/15 14:31:07
------
~小弟淺見,參考看看~
chih
版主


發表:48
回覆:1186
積分:639
註冊:2002-04-02

發送簡訊給我
#4 引用回覆 回覆 發表時間:2003-07-15 15:33:56 IP:210.241.xxx.xxx 未訂閱
將 channel 大大的修改一下..
Procedure TForm1.Button1Click(Sender: TObject);
Begin
  Table1.Close;
  Table1.TableName := 'tableA';
  Table1.Open;
  Table2.Close;
  Table2.TableName := 'tableB';
  Table2.Open;
  Table1.First;
  While Not Table1.Eof Do
    Begin
      Application.ProcessMessages;
      If Not Table2.Locate('FieldName', Table1.FieldByName('FieldName').AsString, []) Then
        ListBox1.Items.Add(Table1.FieldByName('FieldName').AsString);
      Table1.Next;
    End;
  ShowMessage('比對完畢!已將不同的資料顯示在ListBox!');
End;
TRY TRY SEE > 發表人 -
chih
版主


發表:48
回覆:1186
積分:639
註冊:2002-04-02

發送簡訊給我
#5 引用回覆 回覆 發表時間:2003-07-15 15:54:37 IP:210.241.xxx.xxx 未訂閱
本篇重複.請版主刪除.. 發表人 - chih 於 2003/07/15 15:55:43
pwq
一般會員


發表:5
回覆:13
積分:3
註冊:2002-03-13

發送簡訊給我
#6 引用回覆 回覆 發表時間:2003-07-15 16:53:11 IP:211.148.xxx.xxx 未訂閱
var i:integer; While not Table1.Eof Do begin for i:=0 to Table2.FieldCount-1 do if Table2.FindField(Table1.Fields(i).Fieldname)<>nil then begin if Table1.Fields(i).value<>Table2.FindField(Table1.Fields(i).Fieldname).value then listbox1.Item.add(Table1.Fields(i).Fieldname); end; Tabel2.next; Table1.next; end;
系統時間:2024-04-30 4:33:23
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!