unit updateData;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls, DBTables, Db, FileCtrl;
type
TForm1 = class(TForm)
Label1: TLabel;
RadioButton1: TRadioButton;
RadioButton2: TRadioButton;
Label2: TLabel;
Label3: TLabel;
Edit1: TEdit;
Button1: TButton;
Label4: TLabel;
Edit2: TEdit;
Button2: TButton;
Button3: TButton;
Button4: TButton;
Label5: TLabel;
Query1: TQuery;
Table1: TTable;
procedure Button3Click(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Button4Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.DFM}
function CutLast(Str: String): String;
begin
Result := '';
if Str = '' then Exit;
if Str[Length(Str)] = '/' then Result := Copy(Str, 1, Length(Str) -1)
else Result := Str;
end;
procedure EmptyAFile(FileName: String);
var Table1 : TTable;
begin
Table1 := TTable.Create(Application);
Table1.DatabaseName := ExtractFilePath( FileName);
Table1.TableName := ExtractFilename(FileName);
Table1.EmptyTable ;
Table1.Free;
end;
procedure TForm1.Button3Click(Sender: TObject);
var Dir1, Dir2, Appdir : String;
Count, Total : Integer;
begin
Dir1 := CutLast( Edit1.Text );
Dir2 := CutLast( Edit2.Text );
Appdir := CutLast( ExtractFilePath(Application.ExeName) );
if (Dir1 = '') or (Dir2 = '') then Exit;
Query1.Active := false;
Table1.Active := false;
Query1.DatabaseName := Dir1;
Table1.DatabaseName := Dir2;
if RadioButton2.Checked then
begin
if not FileExists(Dir1 + '/book.db') then
begin
MessageDlg('无法找到文件: '+ Appdir + '/book.db', mtError, [mbOK], 0) ;
end
else
begin
if not FileExists(Appdir+'/book.dbf') then
begin
MessageDlg('无法找到文件: '+ Appdir + '/book.dbf', mtError, [mbOK], 0) ;
Exit;
end;
if not FileExists(Appdir+'/book.mdx') then
begin
MessageDlg('无法找到文件: '+ Appdir + '/book.mdx', mtError, [mbOK], 0) ;
Exit;
end;
EmptyAFile(Appdir + '/book.dbf');
with Table1 do
begin
Active := False;
DatabaseName := Appdir;
TableName := 'Book.dbf';
Active := True;
end;
with Query1 do
begin
Active := False;
DataBaseName := Dir1;
SQL.Text := 'select * from book where logno <> "" order by logno';
Active := True;
end;
Total := Query1.RecordCount;
Count := 0;
Query1.First;
while not Query1.EOF do
begin
Table1.Append;
Table1.FieldByName('LogNo').AsString := Query1.FieldByName('LogNo').AsString;
Table1.FieldByName('BarCode').AsString := Query1.FieldByName('BarCode').AsString;
Table1.FieldByName('BookName').AsString := Query1.FieldByName('BookName').AsString;
Table1.FieldByName('Author').AsString := Query1.FieldByName('Author').AsString;
Table1.FieldByName('PubHouse').AsString := Query1.FieldByName('PublishHouse').AsString;
Table1.FieldByName('PubPlace').AsString := Query1.FieldByName('PublishPlace').AsString;
Table1.FieldByName('ISBN').AsString := Query1.FieldByName('ISBN').AsString;
Table1.FieldByName('ClassNo').AsString := Query1.FieldByName('ClassNo').AsString;
Table1.FieldByName('BookFormat').AsString := Query1.FieldByName('BookFormat').AsString;
Table1.FieldByName('PageNo').AsString := Query1.FieldByName('PageNo').AsString;
Table1.FieldByName('PubDate').AsString := Query1.FieldByName('PublishDate').AsString;
Table1.FieldByName('Price').AsString := Query1.FieldByName('Price').AsString;
Table1.FieldByName('BookCaseNo').AsString := Query1.FieldByName('BookCaseNo').AsString;
Table1.FieldByName('Memo').AsString := Query1.FieldByName('Memo').AsString;
Table1.FieldByName('LogDate').AsString := Query1.FieldByName('LogDate').AsString;
Table1.FieldByName('BookTopic').AsString := Query1.FieldByName('BookTopic').AsString;
Table1.FieldByName('Summary').AsString := Query1.FieldByName('Summary').AsString;
Table1.FieldByName('IsOut').AsString := Query1.FieldByName('IsOut').AsString;
Table1.FieldByName('SeriesName').AsString := Query1.FieldByName('SeriesName').AsString;
Table1.FieldByName('KindNo').AsString := Query1.FieldByName('KindNo').AsString;
Table1.FieldByName('InMode').AsString := '购';
Table1.Edit;
Table1.Post;
Query1.Next;
Inc(Count);
Label5.Caption := '已完成 ' + IntToStr(Count) + ', 总共 '+ IntToStr(Total)+' 条记录...';
Application.ProcessMessages;
end;
Label5.Caption := '任务已经完成, 正在拷贝数据库...';
Application.ProcessMessages;
CopyFile(Pchar(Appdir+'/book.dbf'), pchar(Dir2+'/book.dbf'), False);
CopyFile(Pchar(Appdir+'/book.mdx'), pchar(Dir2+'/book.mdx'), False);
MessageDlg('所有的任务都完成!', mtinformation, [mbOK], 0);
Label5.Caption := '';
Table1.Active := False;
// EmptyAFile(Appdir + '/book.dbf');
end;
end;
if RadioButton1.Checked then
begin
if not FileExists(Dir1 + '/Leader.db') then
begin
MessageDlg('无法找到文件: '+ dir1 + '/Leader.db', mtError, [mbOK], 0) ;
end
else
begin
if not FileExists(Appdir+'/leader.dbf') then
begin
MessageDlg('无法找到文件: '+ Appdir + '/leader.dbf', mtError, [mbOK], 0) ;
Exit;
end;
if not FileExists(Appdir+'/leader.mdx') then
begin
MessageDlg('无法找到文件: '+ Appdir + '/leader.mdx', mtError, [mbOK], 0) ;
Exit;
end;
EmptyAFile(Appdir + '/Leader.dbf');
with Table1 do
begin
DatabaseName := Appdir ;
TableName := 'Leader.dbf';
Active := True;
end;
with Query1 do
begin
Active := false;
DataBaseName := Dir1;
SQL.Text := 'select * from Leader order by LeaderNo';
Active := True;
end;
Total := Query1.RecordCount ;
Count := 0;
Query1.First;
while not Query1.EOF do
begin
Table1.Append;
Table1.FieldByName('Leader').AsString := Query1.FieldByName('Leader').AsString;
Table1.FieldByName('LeaderNo').AsString := Query1.FieldByName('LeaderNo').AsString;
Table1.FieldByName('LeaderType').AsString := Query1.FieldByName('LeaderType').AsString;
Table1.FieldByName('Avail').AsString := Query1.FieldByName('Avail').AsString;
Table1.FieldByName('ClassNo').AsString := Query1.FieldByName('ClassNo').AsString;
Table1.FieldByName('GradeNo').AsString := Query1.FieldByName('GradeNo').AsString;
Table1.FieldByName('FromDate').AsString := Query1.FieldByName('FromDate').AsString;
Table1.FieldByName('Sex').AsString := Query1.FieldByName('Sex').AsString;
Table1.Edit;
Table1.Post;
Query1.Next;
Inc(Count);
Label5.Caption := '已完成 ' + IntToStr(Count) + ', 总共 '+ IntToStr(Total)+' 条记录...';
Application.ProcessMessages;
end;
Label5.Caption := '任务已经完成, 正在拷贝数据库...';
Application.ProcessMessages;
CopyFile(Pchar(Appdir+'/leader.dbf'), pchar(Dir2+'/leader.dbf'), False);
CopyFile(Pchar(Appdir+'/leader.mdx'), pchar(Dir2+'/leader.mdx'), False);
MessageDlg('所有的任务都完成!', mtinformation, [mbOK], 0);
Label5.Caption := '';
Table1.Active := False;
// EmptyAFile(Appdir + '/leader.dbf');
end;
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
var Dir : String;
begin
Dir := '';
if selectdirectory('选择目录:', '我的电脑', dir) then Edit1.Text := dir;
end;
procedure TForm1.Button2Click(Sender: TObject);
var Dir : String;
begin
Dir := '';
if selectdirectory('选择目录:', '我的电脑', dir) then Edit2.Text := dir;
end;
procedure TForm1.Button4Click(Sender: TObject);
begin
close;
end;
end.
转换数据库