📄 sys000_01.pas.svn-base
字号:
edtCurrName.SetFocus;
Abort;
end;
qryAcctData.Close;
qryAcctData.SQL.Clear;
qryAcctData.SQL.Add('update GLD100 set G100_004=0');
qryAcctData.ExecSQL;
qryGld100.Close;
qryGld100.SQL.Clear;
qryGld100.SQL.Add('select * from GLD100');
qryGld100.Open;
if qryGld100.Locate('G100_002',cbCurrID.Text,[]) then
begin
qryGld100.Edit;
qryGld100.FieldByName('G100_004').Value:=True; //本位币否
qryGld100.Post;
ACurrRate:=qryGld100.FieldByName('G100_005').Value; //本位币汇率
end else
begin
qryGld100.Insert;
qryGld100.FieldByName('G100_002').Value:=cbCurrID.Text;
qryGld100.FieldByName('G100_003').Value:=edtCurrName.Text;
qryGld100.FieldByName('G100_004').Value:=True;
qryGld100.FieldByName('G100_005').Value:=1;
qryGld100.FieldByName('G100_006').Value:=edtCurr.Text;
qryGld100.Post;
end;
end else
if PageControl1.ActivePageIndex=1 then
begin
//检查数据输入是否正确
CheckInputData;
//创建帐套
bbtnPrior.Enabled:=False;
bbtnNext.Enabled:=False;
PageControl1.ActivePageIndex:=2;
CreateAccount;
end;
//转移到下一页
PageControl1.ActivePageIndex:=PageControl1.ActivePageIndex+1;
if PageControl1.ActivePageIndex=1 then
begin
edtUserName.SetFocus;
bbtnNext.Caption:=GetDBString('SYS00001016'); //完成
end;
bbtnPrior.Enabled:=PageControl1.ActivePageIndex<>0;
end;
//帐套资料写入数据库
function TSys000_01Form.InsertAcctData:string;
var
APath:string;
begin
APath:='';
if cbVer.ItemIndex<>0 then APath:=ASystemPath+'Versions\'+cbVer.Text+'\';
qryAcctData.Close;
qryAcctData.SQL.Clear;
qryAcctData.SQL.Add('select * from HwDatabase');
qryAcctData.Open;
qryAcctData.Append;
qryAcctData.FieldByName('FName').Value:=edtAccount.Text; //帐套名称
qryAcctData.FieldByName('FCompany').Value:=edtCompany.Text; //公司名称
qryAcctData.FieldByName('FDate').Value:=dtDate.Date; //建帐日期
case cbDatabase.ItemIndex of
0:qryAcctData.FieldByName('FPath').Value:=edtPath.Text+edtDBName.Text+'.mdb'; //帐套路径
1:qryAcctData.FieldByName('FPath').Value:=edtDBName.Text; //帐套路径
end;
qryAcctData.FieldByName('FType').Value:=cbDatabase.ItemIndex; //数据库类型
qryAcctData.FieldByName('FHost').Value:=edtServer.Text; //服务器名称
qryAcctData.FieldByName('FUser').Value:=edtDBUser.Text; //数据库用户
qryAcctData.FieldByName('FPass').Value:=edtDBPass.Text; //数据库密码
qryAcctData.FieldByName('FVersion').Value:=APath; //版本路徑
qryAcctData.Post;
qryAcctData.Refresh;
Result:=qryAcctData.FieldByName('FNo').AsString;
end;
//建立系统数据
procedure TSys000_01Form.CreateSystemData(ATableName,AKey1,AKey2:String);
var
I:Integer;
begin
qryNewAcct.Close;
qryNewAcct.SQL.Clear;
qryNewAcct.SQL.Add('select * from '+ATableName);
qryNewAcct.Open;
qryAcctData.Close;
qryAcctData.SQL.Clear;
qryAcctData.SQL.Add('select count(*) from '+ATableName);
qryAcctData.Open;
ProgressBar1.Position:=0;
ProgressBar1.Max:=qryAcctData.Fields[0].Value;
qryAcctData.Close;
qryAcctData.SQL.Clear;
qryAcctData.SQL.Add('select * from '+ATableName);
qryAcctData.Open;
while not qryAcctData.Eof do
begin
Application.ProcessMessages;
ProgressBar1.Position:=ProgressBar1.Position+1;
qryNewAcct.Insert;
for I:=0 to qryNewAcct.FieldCount-1 do
begin
if qryNewAcct.Fields[I].DataType<>ftAutoInc then
begin
qryNewAcct.Fields[I].Value:=qryAcctData.Fields[I].Value;
if (AKey1<>'') or (AKey2<>'') then
begin
if qryNewAcct.Fields[I].FieldName=AKey1 then
qryNewAcct.Fields[I].Value:=GetDBString(qryAcctData.Fields[I].Value)
else if qryNewAcct.Fields[I].FieldName=AKey2 then
qryNewAcct.Fields[I].Value:=GetDBString(qryAcctData.Fields[I].Value,2);
end;
end;
if ATableName='GLD100' then
begin
if qryNewAcct.Fields[I].FieldName='G100_005' then
qryNewAcct.Fields[I].AsString:=FloatToStrF(qryAcctData.FieldByName('G100_005').Value/ACurrRate,ffNumber,10,2);
end;
end;
qryNewAcct.Post;
qryAcctData.Next;
end;
end;
//检查数据输入是否正确
procedure TSys000_01Form.CheckInputData;
begin
if trim(edtUserName.Text)='' then
begin
ShowMsg('UMS10000021'); //用户名称不能为空
edtUserName.SetFocus;
Abort;
end;
if edtPassword.Text='' then
begin
ShowMsg('UMS10000022'); //用户密码不能为空
edtPassword.SetFocus;
Abort;
end;
if edtConfig.Text<>edtPassword.Text then
begin
ShowMsg('UMS10000023'); //确认密码不正确,请重新输入
edtConfig.SetFocus;
Abort;
end;
if trim(edtDBName.Text)='' then
begin
ShowMsg('UMS10000627'); //数据库名不能为空
edtDBName.SetFocus;
Abort;
end;
//建立SQL Server数据库
if cbDatabase.ItemIndex=0 then
begin
if FileExists(edtPath.Text+edtDBName.Text+'.mdb') then
begin
ShowMsg('UMS10000628'); //数据库已存在,请重新输入
edtDBName.SetFocus;
Abort;
end;
end;
//建立SQL Server数据库
if cbDatabase.ItemIndex=1 then
begin
if trim(edtServer.Text)='' then
begin
ShowMsg('UMS10000125'); //服务器名称不能为空
edtServer.SetFocus;
Abort;
end;
if trim(edtDBUser.Text)='' then
begin
ShowMsg('UMS10000126'); //数据库用户不能为空
edtDBUser.SetFocus;
Abort;
end;
end;
if (cbImport.Checked) and (cbAccount.Text='') then
begin
ShowMsg('UMS10000127'); //引入帐套不能为空
cbAccount.SetFocus;
Abort;
end;
//测试数据库连接是否正常
if cbDatabase.ItemIndex=1 then //0=Access,1=SQL Server
begin
ConnectDB(ADOConnection1,1,edtServer.Text,'master',edtDBUser.Text,edtDBPass.Text);
qryCreateDB.Close;
qryCreateDB.SQL.Clear;
qryCreateDB.SQL.Add('select 1 from sysdatabases where name='+''''+edtDBName.Text+'''');
qryCreateDB.Open;
if not qryCreateDB.IsEmpty then
begin
ShowMsg('UMS10000628'); //数据库已存在,请重新输入
edtDBName.SetFocus;
Abort;
end;
end;
end;
//创建帐套
procedure TSys000_01Form.CreateAccount;
var
ADBFile,ADBName,ATableName,AKey1,AKey2:string;
AAccountID:string; //新建帐套的电脑编号
AUserNo:Integer;
begin
Update;
lblProgress.Caption:=GetDBString('SYS00001025'); //正在建立帐套资料...
lblTotal.Caption:=GetDBString('SYS00001026'); //总进度
ProgressBar2.Position:=0;
ProgressBar2.Max:=12;
//帐套资料写入数据库
try
AAccountID:=InsertAcctData;
if AAccountID='' then Exit;
except
ShowMsg(SYSDM.SYSADOC.Errors[0].Description,1);
Abort;
end;
ProgressBar2.Position:=ProgressBar2.Position+1;
//创建数据库
try
lblProgress.Caption:=GetDBString('SYS00001027'); //正在建立帐套数据库...
ADBName:=edtDBName.Text;
ADBFile:=edtPath.Text+ADBName+'.mdb';
case cbDatabase.ItemIndex of //0=Access, 1=SQL Server
0:CreateAccessDB(ADBFile,'HowWell19740507');
1:CreateSQLDB(AServerPath,ADBName,edtDBUser.Text,edtDBPass.Text,edtServer.Text);
end;
case cbDatabase.ItemIndex of //0=Access, 1=SQL Server
0:ConnectDB(SYSDM.ADOC,cbDatabase.ItemIndex,edtServer.Text,ADBFile,edtDBUser.Text,'HowWell19740507');
1:ConnectDB(SYSDM.ADOC,cbDatabase.ItemIndex,edtServer.Text,ADBName,edtDBUser.Text,edtDBPass.Text);
end;
except
if ADOConnection1.Errors[0].Description<>'' then
ShowMsg(GetDBString('UMS10000024')+#13+ADOConnection1.Errors[0].Description,1); //创建数据库失败
//创建数据库出错时,删除帐套资料
qryAcctData.Close;
qryAcctData.SQL.Clear;
qryAcctData.SQL.Add('delete from HwDatabase where FNo='+AAccountID);
qryAcctData.ExecSQL;
Abort;
end;
ProgressBar2.Position:=ProgressBar2.Position+1;
//创建表(用脚本文件)
try
lblProgress.Caption:=GetDBString('SYS00001028'); //正在建立数据库的表结构...
CreateTableWithDDM(ASystemPath+'HwERP.ddm',qryNewAcct,ProgressBar1,lblProgress); //创建表结构
//建立数据库结构版本信息
CreateSysVersion(ASystemPath+'HwERP.ddm', qryNewAcct);
ProgressBar2.Position:=ProgressBar2.Position+1;
//建立用户资料及权限资料
lblProgress.Caption:=GetDBString('SYS00001030'); //正在建立用户资料及权限资料...
ProgressBar1.Position:=0;
ProgressBar1.Max:=100;
qryNewAcct.Close;
qryNewAcct.SQL.Clear;
qryNewAcct.SQL.Add('select * from SYS500A');
qryNewAcct.Open;
ProgressBar1.Max:=30;
qryNewAcct.Insert;
qryNewAcct.FieldByName('S500A_002').Value:=edtUserName.Text;
qryNewAcct.FieldByName('S500A_003').Value:=EncDecStr(edtPassword.Text,0);
qryNewAcct.FieldByName('S500A_004').Value:=False;
qryNewAcct.FieldByName('S500A_005').Value:=True;
qryNewAcct.FieldByName('S500A_006').Value:=True;
qryNewAcct.Post;
qryNewAcct.Refresh;
AUserNo:=qryNewAcct.FieldByName('S500A_001').Value;
ProgressBar2.Position:=ProgressBar2.Position+1;
//创建系统数据
lblProgress.Caption:=GetDBString('SYS00001032'); //正在建立系统缺省数据...
qryAcctQuery.Close;
qryAcctQuery.SQL.Clear;
qryAcctQuery.SQL.Add('select * from SYSTEM order by FTable');
qryAcctQuery.Open;
while not qryAcctQuery.Eof do
begin
ATableName:=qryAcctQuery.FieldByName('FTable').AsString;
if (ATableName<>'HwData') or (ATableName<>'HwDatabase') or (ATableName<>'SYSTEM') then
begin
AKey1:=qryAcctQuery.FieldByName('FKey1').AsString;
AKey2:=qryAcctQuery.FieldByName('FKey2').AsString;
lblProgress.Caption:=GetDBString('SYS00001032')+'['+ATableName+']'; //正在建立系统缺省数据...
CreateSystemData(ATableName,AKey1,AKey2);
end;
qryAcctQuery.Next;
end;
ProgressBar2.Position:=ProgressBar2.Position+1;
ProgressBar1.Max:=60;
//建立权限表
qryNewAcct.Close;
qryNewAcct.SQL.Clear;
qryNewAcct.SQL.Add('insert into SYS500B(S500B_001,S500B_002,S500B_004,S500B_005,S500B_006,S500B_007,S500B_008,S500B_009,S500B_010,S500B_011,S500B_012)');
qryNewAcct.SQL.Add('select '+IntToStr(AUserNo)+', S500D_011, 0, 0, 0, 0, 0, 0, 0, S500D_010,S500D_005 from SYS500D');
qryNewAcct.ExecSQL;
ProgressBar1.Position:=100;
//从其他帐套中引入基础资料
if cbImport.Checked then
begin
lblProgress.Caption:=GetDBString('SYS00001035'); //正在引入其他帐套的数据...
ImportData;
ProgressBar2.Position:=ProgressBar2.Position+1;
end;
except
ShowMsg(SYSDM.ADOC.Errors[0].Description,1);
Abort;
end;
ProgressBar2.Position:=ProgressBar2.Max;
ModalResult:=1;
end;
procedure TSys000_01Form.bbtnExitClick(Sender: TObject);
begin
inherited;
//退出
if ShowDialog('UMS10000025')=IDYES then Close; //是否取消并退出新建帐套?
end;
procedure TSys000_01Form.FormDestroy(Sender: TObject);
begin
inherited;
Sys000_01Form:=nil;
end;
procedure TSys000_01Form.cbImportClick(Sender: TObject);
begin
inherited;
lblFromAccount.Enabled:=cbImport.Checked;
cbAccount.Enabled:=cbImport.Checked;
if cbImport.Checked then
cbAccount.Color:=AEnableColor
else
cbAccount.Color:=ADisableColor;
end;
procedure TSys000_01Form.cbDatabaseChange(Sender: TObject);
begin
inherited;
//设置数据库类型 0=Access,1=SQL Server
if cbDatabase.ItemIndex=0 then //0=Access
begin
edtServer.Text:='';
edtDBUser.Text:='';
edtDBPass.Text:='';
edtServer.Color:=ADisableColor;
edtDBUser.Color:=ADisableColor;
edtDBPass.Color:=ADisableColor;
edtServer.Enabled:=False;
edtDBUser.Enabled:=False;
edtDBPass.Enabled:=False;
lblServer.Enabled:=False;
lblDBUser.Enabled:=False;
lblDBPass.Enabled:=False;
end else if cbDatabase.ItemIndex=1 then //1=SQL Server
begin
edtServer.Text:=ComputerName;
edtDBUser.Text:='sa';
edtDBPass.Text:='';
edtServer.Color:=AEnableColor;
edtDBUser.Color:=AEnableColor;
edtDBPass.Color:=AEnableColor;
edtServer.Enabled:=True;
edtDBUser.Enabled:=True;
edtDBPass.Enabled:=True;
lblServer.Enabled:=True;
lblDBUser.Enabled:=True;
lblDBPass.Enabled:=True;
end;
end;
procedure TSys000_01Form.cbCurrIDExit(Sender: TObject);
begin
inherited;
if not qryGld100.Active then qryGld100.Open;
qryGld100.Locate('G100_002',cbCurrID.Text,[]);
cbCurrID.Text:=qryGld100.FieldByName('G100_002').Value;
edtCurrName.Text:=qryGld100.FieldByName('G100_003').Value;
edtCurr.Text:=qryGld100.FieldByName('G100_006').Value;
ACurrRate:=qryGld100.FieldByName('G100_005').Value; //本位币汇率
end;
procedure TSys000_01Form.cbCurrIDChange(Sender: TObject);
begin
inherited;
cbCurrIDExit(cbCurrID);
end;
initialization
RegisterClass(TSys000_01Form);
finalization
UnRegisterClass(TSys000_01Form);
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -