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

📄 sys000_01.pas.svn-base

📁 一个用Delphi开发的ERP软件
💻 SVN-BASE
📖 第 1 页 / 共 2 页
字号:
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 + -