兩個Access 的 mdb 檔案互相匯入的問題 |
缺席
|
kwon
一般會員 發表:14 回覆:64 積分:22 註冊:2002-08-08 發送簡訊給我 |
|
hagar
版主 發表:143 回覆:4056 積分:4445 註冊:2002-04-14 發送簡訊給我 |
|
kwon
一般會員 發表:14 回覆:64 積分:22 註冊:2002-08-08 發送簡訊給我 |
程式碼如下: unit Unit15; interface uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
Db, ADODB, StdCtrls, Grids, DBGrids, DBTables; type
TForm15 = class(TForm)
Label1: TLabel;
Edit1: TEdit;
Button1: TButton;
OpenDialog1: TOpenDialog;
Button2: TButton;
Label2: TLabel;
Label3: TLabel;
Label4: TLabel;
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure FormShow(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure Edit1Change(Sender: TObject);
procedure Button2Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end; var
Form15: TForm15;
TB1, TB2 : TADOTable;
Path1, Path2 : String; implementation uses MainForm; {$R *.DFM} procedure TForm15.FormClose(Sender: TObject; var Action: TCloseAction);
begin
Action:=CaFree;
end; procedure TForm15.FormShow(Sender: TObject);
begin
Path1:='Provider=Microsoft.Jet.OLEDB.4.0;Password="";Data Source=' Form1.Path Form1.DBName ';Persist Security Info=True';
TB1:=TADOTable.Create(Self);
TB2:=TADOTable.Create(Self);
TB1.ConnectionString:=PATH1;
TB1.TableName:='攔巡查資料';
end; procedure TForm15.Button1Click(Sender: TObject);
begin
if OpenDialog1.Execute then
Edit1.Text := OpenDialog1.FileName;
end; procedure TForm15.Edit1Change(Sender: TObject);
begin
Path2:='Provider=Microsoft.Jet.OLEDB.4.0;Password="";Data Source=' Edit1.Text ';Persist Security Info=True';
TB2.ConnectionString:=PATH2;
TB2.TableName:='巡查資料庫';
end; procedure TForm15.Button2Click(Sender: TObject);
var I,j:Integer;
CARNO,ExDate,QS,sTYPE : String;
begin
I:=0; j:=0;
TB2.Open;
TB1.Open;
sTYPE:='1';
Label3.Caption:=IntToStr(TB2.RecordCount);
While not TB2.Eof Do
begin
J:=J 1;
Application.ProcessMessages;
Label4.Caption:=IntTostr(J) ' / ' Label3.Caption;
CARNO := TB2.FieldByName('車號').asvariant;
ExDate := TB2.FieldByName('巡查日期').asvariant; if NOT TB1.Locate('車號;巡查日期;型態',VarArrayOf([CARNO,EXDATE,sTYPE]),[]) then
begin
Application.ProcessMessages;
I := I 1;
TB1.Insert;
TB1.FieldByName('序號').Asvariant := TB2.FieldByName('序號').Asvariant;
TB1.FieldByName('車號').Asvariant := TB2.FieldByName('車號').Asvariant;
TB1.FieldByName('執行人員編號').Asvariant := TB2.FieldByName('執行人員編號').Asvariant ;
TB1.FieldByName('執行單位').Asvariant := TB2.FieldByName('執行單位').Asvariant;
TB1.FieldByName('巡查日期').asvariant := TB2.FieldByName('巡查日期').asvariant ;
TB1.FieldByName('巡查時間').Asvariant := TB2.FieldByName('巡查時間').Asvariant ;
TB1.FieldByName('行政區域').Asvariant := TB2.FieldByName('行政區域').Asvariant;
TB1.FieldByName('車組').Asvariant := TB2.FieldByName('車組').Asvariant;
TB1.FieldByName('巡查地點').Asvariant := TB2.FieldByName('巡查地點').Asvariant;
TB1.FieldByName('廠牌').Asvariant := TB2.FieldByName('廠牌').Asvariant;
TB1.FieldByName('輕重型').Asvariant := TB2.FieldByName('輕(1)/重(2)').Asvariant;
TB1.FieldByName('行程別').Asvariant := TB2.FieldByName('行程別').Asvariant;
TB1.FieldByName('排氣量').Asvariant := TB2.FieldByName('排氣量').Asvariant;
TB1.FieldByName('里程數').AsInteger := TB2.FieldByName('里程數').AsInteger;
TB1.FieldByName('型態').AsVariant := '1'; TB1.Post;
Label2.Caption:='共寫入 ' IntTostr(I) ' 筆';
end;
TB2.Next;
end;
ShowMessage('全部匯入完成!');
end; end.
|
hagar
版主 發表:143 回覆:4056 積分:4445 註冊:2002-04-14 發送簡訊給我 |
|
kwon
一般會員 發表:14 回覆:64 積分:22 註冊:2002-08-08 發送簡訊給我 |
|
hagar
版主 發表:143 回覆:4056 積分:4445 註冊:2002-04-14 發送簡訊給我 |
|
kwon
一般會員 發表:14 回覆:64 積分:22 註冊:2002-08-08 發送簡訊給我 |
|
kwon
一般會員 發表:14 回覆:64 積分:22 註冊:2002-08-08 發送簡訊給我 |
|
hagar
版主 發表:143 回覆:4056 積分:4445 註冊:2002-04-14 發送簡訊給我 |
|
kwon
一般會員 發表:14 回覆:64 積分:22 註冊:2002-08-08 發送簡訊給我 |
|
領航天使
站長 發表:12216 回覆:4186 積分:4084 註冊:2001-07-25 發送簡訊給我 |
|
kwon
一般會員 發表:14 回覆:64 積分:22 註冊:2002-08-08 發送簡訊給我 |
|
hagar
版主 發表:143 回覆:4056 積分:4445 註冊:2002-04-14 發送簡訊給我 |
|
領航天使
站長 發表:12216 回覆:4186 積分:4084 註冊:2001-07-25 發送簡訊給我 |
|
kwon
一般會員 發表:14 回覆:64 積分:22 註冊:2002-08-08 發送簡訊給我 |
|
hagar
版主 發表:143 回覆:4056 積分:4445 註冊:2002-04-14 發送簡訊給我 |
|
kwon
一般會員 發表:14 回覆:64 積分:22 註冊:2002-08-08 發送簡訊給我 |
SQL 的敘述中的三個欄位都是索引值(車號,巡查日期及型態)
程式碼如下: unit Unit1; interface uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls, Db, ADODB; type
TForm1 = class(TForm)
ADOQuery1: TADOQuery;
Button1: TButton;
ADOQuery2: TADOQuery;
Label1: TLabel;
Label2: TLabel;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end; var
Form1: TForm1; implementation {$R *.DFM} procedure TForm1.Button1Click(Sender: TObject);
VAR CARNO, EXDATE, QS : STRING;
I,J:INTEGER;
begin
I:=0;J:=0;
ADOQuery2.Close;
ADOQuery2.SQL.Clear;
ADOQuery2.SQL.Add('SELECT * FROM 巡查資料庫');
ADOQuery2.Open; WHILE NOT ADOQuery2.Eof DO
BEGIN
APPLICATION.ProcessMessages;
I:=I 1;
Label1.Caption := IntToStr(I) ' / ' INTTOSTR(ADOQuery2.RecordCount);
CARNO := ADOQuery2.FieldByName('車號').ASSTRING;
EXDATE := ADOQuery2.FieldByName('巡查日期').ASSTRING;
QS:='SELECT * FROM 攔巡查資料 WHERE 車號 = ''' CARNO ''' AND 巡查日期 = #' EXDATE '# AND 型態 = ''1'' ' ;
ADOQuery1.Close;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add(QS);
ADOQuery1.Open;
IF ADOQuery1.RecordCount = 0 THEN
BEGIN
J:=J 1;
ADOQuery1.Append;
ADOQuery1.FieldByName('車號').ASVARIANT:=ADOQuery2.FieldByName('車號').ASVARIANT;
ADOQuery1.FieldByName('巡查日期').ASVARIANT:=ADOQuery2.FieldByName('巡查日期').ASVARIANT;
ADOQuery1.FieldByName('巡查時間').ASVARIANT:=ADOQuery2.FieldByName('巡查時間').ASVARIANT;
ADOQuery1.FieldByName('廠牌').ASVARIANT:=ADOQuery2.FieldByName('廠牌').ASVARIANT;
ADOQuery1.FieldByName('行程別').ASVARIANT:=ADOQuery2.FieldByName('行程別').ASVARIANT;
ADOQuery1.FieldByName('排氣量').ASVARIANT:=ADOQuery2.FieldByName('排氣量').ASVARIANT;
ADOQuery1.FieldByName('里程數').ASVARIANT:=ADOQuery2.FieldByName('里程數').ASVARIANT;
ADOQuery1.FieldByName('輕重型').ASVARIANT:=ADOQuery2.FieldByName('輕(1)/重(2)').ASVARIANT;
ADOQuery1.FieldByName('行政區域').ASVARIANT:=ADOQuery2.FieldByName('行政區域').ASVARIANT;
ADOQuery1.FieldByName('巡查地點').ASVARIANT:=ADOQuery2.FieldByName('巡查地點').ASVARIANT;
ADOQuery1.FieldByName('執行人員編號').ASVARIANT:=ADOQuery2.FieldByName('執行人員編號').ASVARIANT;
ADOQuery1.FieldByName('執行單位').ASVARIANT:=ADOQuery2.FieldByName('執行單位').ASVARIANT;
ADOQuery1.FieldByName('車組').ASVARIANT:=ADOQuery2.FieldByName('車組').ASVARIANT;
ADOQuery1.FieldByName('回檢日期').ASVARIANT:=ADOQuery2.FieldByName('回檢日期').ASVARIANT;
ADOQuery1.FieldByName('型態').ASVARIANT:='1';
ADOQuery1.Post;
Label2.Caption:='共匯入 ' IntToStr(J) ' 筆';
END; ADOQuery2.Next;
END;
SHOWMESSAGE('全部匯入完畢....');
end; end.
|
kwon
一般會員 發表:14 回覆:64 積分:22 註冊:2002-08-08 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |