⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 sys000_01.pas.svn-base

📁 这是一个功能齐全的,代码完整的ERP企业信息管理系统,现在上传和大家分享
💻 SVN-BASE
📖 第 1 页 / 共 2 页
字号:
      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 + -