📄 sys000_01.pas.svn-base
字号:
unit Sys000_01;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Bas100_01, ExtCtrls, StdCtrls, Buttons, DB, ADODB, wwdbdatetimepicker,
ComCtrls, IniFiles, Menus;
type
TSys000_01Form = class(TBas100_01Form)
Panel1: TPanel;
PageControl1: TPageControl;
bbtnPrior: TBitBtn;
bbtnNext: TBitBtn;
bbtnExit: TBitBtn;
Bevel1: TBevel;
Image1: TImage;
TabSheet1: TTabSheet;
TabSheet2: TTabSheet;
lblName: TLabel;
lblCompany: TLabel;
lblDate: TLabel;
lblPath: TLabel;
lblDest1: TLabel;
lblDest2: TLabel;
qryAcctData: TADOQuery;
qryNewAcct: TADOQuery;
lblCurrID: TLabel;
lblCurrName: TLabel;
edtAccount: TEdit;
edtCompany: TEdit;
dtDate: TwwDBDateTimePicker;
edtPath: TEdit;
edtCurrName: TEdit;
lblDBType: TLabel;
cbDatabase: TComboBox;
cbImport: TCheckBox;
cbAccount: TComboBox;
lblDBUser: TLabel;
edtDBUser: TEdit;
edtDBPass: TEdit;
lblDBPass: TLabel;
lblServer: TLabel;
edtServer: TEdit;
lblFromAccount: TLabel;
lblUserName: TLabel;
lblPassword: TLabel;
lblConfig: TLabel;
edtUserName: TEdit;
edtPassword: TEdit;
edtConfig: TEdit;
ADOConnection1: TADOConnection;
qryCreateDB: TADOQuery;
SourceADOC: TADOConnection;
qrySource: TADOQuery;
qryAcctQuery: TADOQuery;
lblCurr: TLabel;
edtCurr: TEdit;
cbCurrID: TComboBox;
TabSheet3: TTabSheet;
ProgressBar1: TProgressBar;
ProgressBar2: TProgressBar;
lblProgress: TLabel;
lblTotal: TLabel;
qryGld100: TADOQuery;
Panel2: TPanel;
Panel3: TPanel;
Panel4: TPanel;
Panel5: TPanel;
cbVer: TComboBox;
lblVer: TLabel;
sbPath: TSpeedButton;
lblDBName: TLabel;
edtDBName: TEdit;
procedure FormCreate(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure bbtnPriorClick(Sender: TObject);
procedure bbtnNextClick(Sender: TObject);
procedure bbtnExitClick(Sender: TObject);
procedure FormDestroy(Sender: TObject);
procedure cbImportClick(Sender: TObject);
procedure cbDatabaseChange(Sender: TObject);
procedure cbCurrIDExit(Sender: TObject);
procedure cbCurrIDChange(Sender: TObject);
private
ACurrRate:Double;
procedure ImportAll(ATable:String);
procedure ImportEnd(ATable:String);
procedure ImportData;
procedure SetInterface;
function InsertAcctData:string;
procedure CreateSystemData(ATableName,AKey1,AKey2:String);
procedure CheckInputData;
procedure CreateAccount;
{ Private declarations }
public
{ Public declarations }
end;
var
Sys000_01Form: TSys000_01Form;
implementation
uses CommFun, SYSDATA;
{$R *.dfm}
//替换SQL脚本中的“[]”字符串,用GetDBString()的值
function SetSQLScript(ASQL:String):String;
var
I:Integer;
S,AString,AResult:String;
begin
for I:=1 to Length(ASQL) do
begin
if ASQL[I]='[' then
begin
AString:=S;
S:='';
end
else if ASQL[I]=']' then
begin
S:=GetDBString(S);
AResult:=AResult+AString+S;
end
else
S:=S+ASQL[I];
end;
if AResult='' then AResult:=ASQL;
Result:=AResult;
end;
//引入所有数据
procedure TSys000_01Form.ImportAll(ATable:String);
var
I:Integer;
begin
//新建帐套表
qryNewAcct.Close;
qryNewAcct.Close;
qryNewAcct.SQL.Clear;
qryNewAcct.SQL.Add('select * from '+ATable);
qryNewAcct.Open;
//引入帐套表
qrySource.Close;
qrySource.SQL.Clear;
qrySource.SQL.Add('select * from '+ATable);
qrySource.Open;
while not qrySource.Eof do
begin
qryNewAcct.Insert;
for I:=0 to qrySource.FieldCount-1 do
qryNewAcct.Fields[I].Value:=qryNewAcct.Fields[I].Value;
qryNewAcct.Post;
qrySource.Next;
end;
qrySource.Close;
qryNewAcct.Close;
end;
//引入期末余额
procedure TSys000_01Form.ImportEnd(ATable:String);
begin
//新建帐套表
qryNewAcct.Close;
qryNewAcct.SQL.Clear;
qryNewAcct.SQL.Add('select * from '+ATable);
qryNewAcct.Open;
//引入帐套表
{ ASQL:=SetSQLScript(ASQL);
qrySource.Close;
qrySource.SQL.Clear;
qrySource.SQL.Add(ASQL);
qrySource.Open;
while not qrySource.Eof do
begin
qryNewAcct.Insert;
for I:=0 to qrySource.FieldCount-1 do
qryNewAcct.Fields[I].Value:=qrySource.Fields[I].Value;
qryNewAcct.Post;
qrySource.Next;
end;
qrySource.Close;
qryNewAcct.Close; }
end;
//引入数据
procedure TSys000_01Form.ImportData;
var
ATable:string;
AType:Integer;
ADataType:Integer;
AServer,ADBUser,ADBPass,AFromDBFile:string;
begin
qryAcctData.Close;
qryAcctData.SQL.Clear;
qryAcctData.SQL.Add('select * from HwDatabase where FName='+''''+cbAccount.Text+'''');
qryAcctData.Open;
AFromDBFile:=qryAcctData.FieldByName('FPath').AsString;
if AFromDBFile=AFileName then //选择引入的帐套等于登录时的当前帐套
begin
qrySource.Connection:=SYSDM.ADOC;
end else
begin
AFromDBFile:=qryAcctData.FieldByName('FPath').AsString;
ADataType:=qryAcctData.FieldByName('FType').Value; //数据库类型
AServer:=qryAcctData.FieldByName('FHost').Value; //服务器名称
ADBUser:=qryAcctData.FieldByName('FUser').Value; //数据库用户
ADBPass:=qryAcctData.FieldByName('FPass').Value; //数据库密码
case ADataType of //0=Access,1=SQL Server
0:ConnectDB(SourceADOC,ADataType,AServer,AFromDBFile,ADBUser,ADBPass);
1:ConnectDB(SourceADOC,ADataType,AServer,AFromDBFile,ADBUser,ADBPass);
end;
end;
qryAcctData.Close;
qryAcctData.SQL.Clear;
qryAcctData.SQL.Add('select count(*) from HwData');
qryAcctData.Open;
ProgressBar1.Position:=0;
ProgressBar1.Max:=qryAcctData.Fields[0].Value;
qryAcctQuery.Close;
qryAcctQuery.SQL.Clear;
qryAcctQuery.SQL.Add('select * from HwData');
qryAcctQuery.Open;
while not qryAcctQuery.Eof do
begin
Application.ProcessMessages;
ProgressBar1.Position:=ProgressBar1.Position+1;
ATable:=qryAcctQuery.FieldByName('FTable').Value;
AType:=qryAcctQuery.FieldByName('FType').Value;
case AType of //0=所有数据,1=期末余额
0:ImportAll(ATable);
1:ImportEnd(ATable);
end;
qryAcctQuery.Next;
end;
end;
procedure TSys000_01Form.SetInterface;
var
AStringList:TStringList;
begin
Caption:=GetDBString('SYS00001001'); //新建帐套
lblDest1.Caption:=GetDBString('SYS00001002'); //新建帐套,用户可以建立多个帐套,以便管理维护每个帐套的资金流动情况。请输入下列帐套信息,然后按下一步......
lblName.Caption:=GetDBString('SYS00001003'); //帐套名称:
lblCompany.Caption:=GetDBString('SYS00001004'); //公司名称:
lblDate.Caption:=GetDBString('SYS00001005'); //建帐日期:
lblPath.Caption:=GetDBString('SYS00001006'); //帐套路径:
lblCurrID.Caption:=GetDBString('SYS00001007'); //币别编号:
lblCurrName.Caption:=GetDBString('SYS00001008'); //币别名称:
lblCurr.Caption:=GetDBString('SYS00001024'); //币别符号:
bbtnPrior.Caption:=GetDBString('SYS00001009'); //上一步(&B)
bbtnNext.Caption:=GetDBString('SYS00001010'); //下一步(&N)
bbtnExit.Caption:=GetDBString('SYS00001011'); //退出(&X)
lblDest2.Caption:=GetDBString('SYS00001012'); //输入新建帐套的管理用户名及其密码,请牢记并小心保存密码,此用户及密码是新建帐套的管理者,输入完下列信息后,按完成。
lblUserName.Caption:=GetDBString('SYS00001013'); //用户名称:
lblPassword.Caption:=GetDBString('SYS00001014'); //用户密码:
lblConfig.Caption:=GetDBString('SYS00001015'); //确认密码:
edtCurrName.Text:=GetDBString('SYS00001017'); //人民币
lblDBType.Caption:=GetDBString('SYS00001018'); //数据库类型:
lblServer.Caption:=GetDBString('SYS00001019'); //服务器名称:
lblDBUser.Caption:=GetDBString('SYS00001020'); //数据库用户:
lblDBPass.Caption:=GetDBString('SYS00001021'); //密码:
cbImport.Caption:=GetDBString('SYS00001022'); //从其他帐套中引入基础资料
lblFromAccount.Caption:=GetDBString('SYS00001023'); //引入帐套:
lblProgress.Caption:=GetDBString('SYS00001025'); //正在建立帐套资料...
lblTotal.Caption:=GetDBString('SYS00001026'); //总进度
lblVer.Caption:=GetDBString('SYS00001037'); //版本
lblDBName.Caption:=GetDBString('SYS00001039'); //数据库名
//加入所有版本信息
AStringList:=TStringList.Create;
AStringList.Add(GetDBString('SYS00001040')); //标准版本
SearchDir(ASystemPath+'Versions\',AStringList);
cbVer.Clear;
cbVer.Items.AddStrings(AStringList);
cbVer.ItemIndex:=0;
AStringList.Free;
end;
procedure TSys000_01Form.FormCreate(Sender: TObject);
var
ACurrency:String;
begin
// inherited;
//界面信息设置
SetInterface;
//取得所有已建立的帐套名称
cbAccount.Clear;
qryAcctData.Close;
qryAcctData.SQL.Clear;
qryAcctData.SQL.Add('select * from HwDatabase');
qryAcctData.Open;
while not qryAcctData.Eof do
begin
cbAccount.Items.Add(qryAcctData.FieldByName('FName').AsString);
qryAcctData.Next;
end;
lblFromAccount.Enabled:=cbImport.Checked;
cbAccount.Enabled:=cbImport.Checked;
if cbImport.Checked then
cbAccount.Color:=AEnableColor
else
cbAccount.Color:=ADisableColor;
//取得帐套数据库中的缺省币别资料
cbCurrID.Clear;
qryGld100.Close;
qryGld100.SQL.Clear;
qryGld100.SQL.Add('select * from GLD100');
qryGld100.Open;
while not qryGld100.Eof do
begin
cbCurrID.Items.Add(qryGld100.FieldByName('G100_002').AsString);
if qryGld100.FieldByName('G100_004').AsBoolean then ACurrency:=qryGld100.FieldByName('G100_002').AsString;
qryGld100.Next;
end;
cbCurrID.Text:=ACurrency;
//设置数据库类型 0=Access,1=SQL Server
cbDatabase.ItemIndex:=0;
cbDatabaseChange(cbDatabase);
dtDate.Date:=Date;
edtPath.Text:=ExtractFilePath(ParamStr(0));
if copy(edtPath.Text,length(edtPath.Text),1)<>'\' then edtPath.Text:=edtPath.Text+'\';
edtPath.Text:=edtPath.Text+'Data\';
PageControl1.ActivePageIndex:=0;
end;
procedure TSys000_01Form.FormClose(Sender: TObject;
var Action: TCloseAction);
begin
// inherited;
Action:=caFree;
end;
procedure TSys000_01Form.bbtnPriorClick(Sender: TObject);
begin
inherited;
//上一步
PageControl1.ActivePageIndex:=PageControl1.ActivePageIndex-1;
bbtnPrior.Enabled:=PageControl1.ActivePageIndex<>0;
bbtnNext.Enabled:=PageControl1.ActivePageIndex<1;
bbtnNext.Caption:=GetDBString('SYS00001010'); //下一步(&N)
end;
procedure TSys000_01Form.bbtnNextClick(Sender: TObject);
begin
inherited;
//下一步
if PageControl1.ActivePageIndex=0 then
begin
//帐套名称&建帐日期&帐套路径
if trim(edtAccount.Text)='' then
begin
ShowMsg('UMS10000016'); //帐套名称不能为空
edtAccount.SetFocus;
Abort;
end;
qryAcctQuery.Close;
qryAcctQuery.SQL.Clear;
qryAcctQuery.SQL.Add('select * from HwDatabase where FName='+''''+edtAccount.Text+'''');
qryAcctQuery.Open;
if not qryAcctQuery.IsEmpty then
begin
ShowMsg('UMS10000630'); //帐套已存在,请重新输入
edtAccount.SetFocus;
Abort;
end;
if trim(dtDate.Text)='' then
begin
ShowMsg('UMS10000017'); //建帐日期不能为空
dtDate.SetFocus;
Abort;
end;
if trim(edtPath.Text)='' then
begin
ShowMsg('UMS10000018'); //帐套路径不能为空
edtPath.SetFocus;
Abort;
end;
if trim(cbCurrID.Text)='' then
begin
ShowMsg('UMS10000019'); //币别编号不能为空
cbCurrID.SetFocus;
Abort;
end;
if trim(edtCurrName.Text)='' then
begin
ShowMsg('UMS10000020'); //币别名称不能为空
edtCurrName.SetFocus;
Abort;
end;
qryAcctData.Close;
qryAcctData.SQL.Clear;
qryAcctData.SQL.Add('update GLD100 set G100_004=0');
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -