📄 importform.pas
字号:
unit ImportForm;
interface
uses Windows, SysUtils, Classes, Graphics, Forms, Controls, StdCtrls,
Buttons, ExtCtrls, DB, DBTables, ComCtrls, Dialogs, BDE, IniFiles;
type
TfrmImport = class(TForm)
btnOK: TButton;
btnCancel: TButton;
ProgressBar1: TProgressBar;
Table1: TTable;
lblHeading: TLabel;
TableOld: TTable;
BatchMove1: TBatchMove;
Query1: TQuery;
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure FormCreate(Sender: TObject);
procedure btnOKClick(Sender: TObject);
private
{ Private declarations }
procedure DeleteData(TblName: string);
procedure ImportTable(TblName: string);
public
{ Public declarations }
end;
var
frmImport: TfrmImport;
implementation
uses BS1Form, LookUpsData;
var
strSourceDatabaseName: string;
{$R *.DFM}
procedure TfrmImport.DeleteData(TblName: string);
begin
Screen.cursor := crHourglass;
Query1.close;
Query1.SQL[0] := 'DELETE FROM ' + TblName;
try Query1.open; except; end;
ProgressBar1.StepIt;
end;
procedure TfrmImport.ImportTable(TblName: string);
var Maps: TStringList;
begin
Screen.cursor := crHourglass;
//Showmessage(TblName);
Table1.TableName := TblName;
TableOld.TableName := TblName;
Table1.open;
TableOld.open;
if (Table1.TableName = 'Currency.db') and (TableOld.FieldDefs.IndexOf('APExchangeGLAccount') > -1) then begin //If converting from v1.1g or less, rename APExchangeGLAccount and drop ARExchangeGLAccount.
Maps := TStringlist.create;
with Maps do begin
Clear;
Add('CurrencyID');
Add('CurrencyName');
Add('ExchangeRate');
Add('APGLAccount');
Add('GainLossExchangeGLAccount=APExchangeGLAccount');
Add('APDiscGLAccount');
Add('ARGLAccount');
Add('ARDiscGLAccount');
Add('DfltWriteOffGLAccount');
end;
BatchMove1.Mappings := Maps;
Maps.free;
end else BatchMove1.Mappings.Clear;
BatchMove1.execute;
DbiSaveChanges(Table1.handle);
Table1.close;
TableOld.close;
ProgressBar1.StepIt;
end;
procedure TfrmImport.FormClose(Sender: TObject;
var Action: TCloseAction);
begin
Action := caFree;
end;
procedure TfrmImport.FormCreate(Sender: TObject);
begin
Query1.DatabaseName := strDatabaseName;
Table1.DatabaseName := strDatabaseName;
strSourceDatabaseName := ExtractFilePath(ParamStr(0)) + 'DataOld';
TableOld.DatabaseName := strSourceDatabaseName;
lblHeading.caption := 'Import from ' + strSourceDatabaseName;
end;
procedure TfrmImport.btnOKClick(Sender: TObject);
var
I: integer;
UsersIni: TIniFile;
begin
try //Verify source directory exists.
TableOld.TableName := 'Company.db';
TableOld.open;
TableOld.Close;
except
raise(exception.create('Error reading from data source...' + #13 + #13 + 'Ensure old data has been copied to ' + strSourceDatabaseName));
end;
if license = '' then begin
UsersIni := TIniFile.Create(strSourceDatabaseName + '\Users.ini'); //Import license data.
RegisteredTo := UsersIni.ReadString('General', 'RegisteredTo', '');
UsersIni.Free;
if RegisteredTo = '' then raise(exception.create('Importing data is not allowed until this program has been registered...' + #13 + #13 + 'Please see Help | How to register. If you have already registered a previous version, please enter your license code via Help | About | License Upgrade')); //Prevent importing license code from 30 day trial version.
end;
if Application.MessageBox(PChar('This will delete all existing data...' + #13 + 'Do you want to continue?'), PChar(Application.Title), mb_OKCancel + mb_DefButton2 + mb_IconWarning) <> IDOK then begin
raise(EAbort.create('')); //Silent Exception: "abort;" replaced by "raise etc" since abort conflicts with BDE (required by DbiSaveChanges).
end;
try //Ensure no other users are using the system.
frmBS1.tblCompany.close;
frmBS1.tblCompany.exclusive := true;
frmBS1.tblCompany.open;
frmBS1.tblCompany.close;
frmBS1.tblCompany.exclusive := false;
except
frmBS1.tblCompany.exclusive := false;
frmBS1.tblCompany.open;
raise(exception.create('No one else can be using ' + application.title));
end;
for I := 0 to Application.ComponentCount - 1 do begin
if (Application.Components[I] is TForm)
and (TForm(Application.Components[I]).name <> 'frmBS1')
and (TForm(Application.Components[I]).name <> 'frmImport')
and (TForm(Application.Components[I]).visible = true) then raise(exception.create('All forms must be closed before running this option')); //Get user to finish and "close" (or hide) all forms.
if (Application.Components[I] is TForm)
and (TForm(Application.Components[I]).name <> 'frmBS1')
and (TForm(Application.Components[I]).name <> 'frmImport')
and (TForm(Application.Components[I]).name <> 'frmCalendar')
and (TForm(Application.Components[I]).name <> 'frmDialer')
and (TForm(Application.Components[I]).name <> 'frmPreview')
and (TForm(Application.Components[I]).name <> 'dmLookUps') then TForm(Application.Components[I]).release; //Close any open forms.
end;
session.databases[0].CloseDatasets; //Close any remaining open tables.
lblHeading.caption := 'Deleting data';
repaint;
Screen.cursor := crHourglass;
ProgressBar1.max := 41;
ProgressBar1.step := 1;
ProgressBar1.StepIt;
try
DeleteData('JVDet.db');
DeleteData('JV.db');
DeleteData('JVCtl.db');
DeleteData('APInvChq.db');
DeleteData('APInvDet.db');
DeleteData('APInv.db');
DeleteData('APInvCtl.db');
DeleteData('APCheq.db');
DeleteData('APChqCtl.db');
DeleteData('ARInvPmt.db');
DeleteData('ARInvDet.db');
DeleteData('ARInv.db');
DeleteData('ARInvCtl.db');
DeleteData('ARPmt.db');
DeleteData('ARPmtCtl.db');
DeleteData('VBalance.db');
DeleteData('VContact.db');
DeleteData('Vendor.db');
DeleteData('VendCtl.db');
DeleteData('CBalance.db');
DeleteData('CContact.db');
DeleteData('Customer.db');
DeleteData('CustCtl.db');
DeleteData('Salesman.db');
DeleteData('CusType.db');
DeleteData('Bank.db');
DeleteData('Company.db');
DeleteData('Currency.db');
DeleteData('Item.db');
DeleteData('ItemCtl.db');
DeleteData('Tax.db');
DeleteData('GLActual.db');
DeleteData('GLBudget.db');
DeleteData('GLHist.db');
DeleteData('GLAccnt.db');
DeleteData('FStmtLAc.db');
DeleteData('FStmtLTo.db');
DeleteData('FStmtLin.db');
DeleteData('FStmt.db');
DeleteData('FStmtCtl.db');
finally
Screen.cursor := crDefault;
Query1.close;
end;
lblHeading.caption := 'Importing data';
repaint;
Screen.cursor := crHourglass;
ProgressBar1.max := 42;
ProgressBar1.step := 1;
ProgressBar1.position := 0;
ProgressBar1.StepIt;
try
ImportTable('FStmtCtl.db');
ImportTable('FStmt.db');
ImportTable('FStmtLin.db');
ImportTable('FStmtLTo.db');
ImportTable('FStmtLAc.db');
ImportTable('GLAccnt.db');
ImportTable('GLHist.db');
ImportTable('GLBudget.db');
ImportTable('GLActual.db');
ImportTable('Tax.db');
ImportTable('ItemCtl.db');
ImportTable('Item.db');
ImportTable('Currency.db');
ImportTable('Company.db');
ImportTable('Bank.db');
ImportTable('CusType.db');
ImportTable('Salesman.db');
ImportTable('CustCtl.db');
ImportTable('Customer.db');
ImportTable('CContact.db');
ImportTable('CBalance.db');
ImportTable('VendCtl.db');
ImportTable('Vendor.db');
ImportTable('VContact.db');
ImportTable('VBalance.db');
ImportTable('ARPmtCtl.db');
ImportTable('ARPmt.db');
ImportTable('ARInvCtl.db');
ImportTable('ARInv.db');
ImportTable('ARInvDet.db');
ImportTable('ARInvPmt.db');
ImportTable('APChqCtl.db');
ImportTable('APCheq.db');
ImportTable('APInvCtl.db');
ImportTable('APInv.db');
ImportTable('APInvDet.db');
ImportTable('APInvChq.db');
ImportTable('JVCtl.db');
ImportTable('JV.db');
ImportTable('JVDet.db');
UsersIni := TIniFile.Create(strSourceDatabaseName + '\Users.ini'); //Import license data.
License := UsersIni.ReadString('General', 'License', '');
RegisteredTo := UsersIni.ReadString('General', 'RegisteredTo', '');
UsersIni.Free;
UsersIni := TIniFile.Create(strDatabaseName + '\Users.ini');
UsersIni.WriteString('General', 'RegisteredTo', RegisteredTo);
UsersIni.WriteString('General', 'License', License);
UsersIni.Free;
ProgressBar1.StepIt;
finally
frmBS1.tblCompany.open; //Re-open table(s) on frmBS1.
dmLookUps.free; application.createform (TdmLookUps,dmLookUps); //Re-open tables on data module.
Screen.cursor := crDefault;
end;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -