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

📄 backupaccountform.pas

📁 中小企业管理系统------ ERP系统原代码
💻 PAS
字号:
unit BackupAccountForm;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, EditForm, KsSkinTabs, KsSkinButtons,
  KsSkinForms, KsSkinLabels, dxCntner, dxEditor, dxExEdtr, dxEdLib, dxDBELib,
  syspublic, DB, ADODB, se_controls, KsSkinSpeedButtons;

type
  TfrmBackupAccount = class(TfrmEditForm)
    bbOk: TSeSkinButton;
    bbNo: TSeSkinButton;
    PageControl: TSeSkinPageControl;
    TabBackupAccount: TSeCustomTabSheet;
    TabRestoreAccount: TSeCustomTabSheet;
    SeSkinLabel1: TSeSkinLabel;
    SeSkinLabel2: TSeSkinLabel;
    SeSkinLabel3: TSeSkinLabel;
    SeSkinLabel4: TSeSkinLabel;
    edtBackup: TdxButtonEdit;
    SaveFileDialog: TSaveDialog;
    OpenDlg: TOpenDialog;
    SeSkinLabel5: TSeSkinLabel;
    edtRestore: TdxButtonEdit;
    SeSkinLabel6: TSeSkinLabel;
    lblName: TSeSkinLabel;
    edtName: TdxEdit;
    lblCoName: TSeSkinLabel;
    edtCoName: TdxEdit;
    KsCustomTabSheet1: TSeCustomTabSheet;
    SeSkinLabel7: TSeSkinLabel;
    SeSkinLabel8: TSeSkinLabel;
    SeSkinLabel10: TSeSkinLabel;
    edtUpdate: TdxButtonEdit;
    lblName_u: TSeSkinLabel;
    edtName_u: TdxEdit;
    lblCoName_u: TSeSkinLabel;
    edtCoName_u: TdxEdit;
    ADOSetLogin: TADODataSet;
    procedure bbOkClick(Sender: TObject);
    procedure edtBackupButtonClick(Sender: TObject;
      AbsoluteIndex: Integer);
    procedure bbNoClick(Sender: TObject);
    procedure edtRestoreButtonClick(Sender: TObject;
      AbsoluteIndex: Integer);
    procedure edtUpdateButtonClick(Sender: TObject;
      AbsoluteIndex: Integer);
  private
    { Private declarations }
    bReturn: Boolean;
    lPubBackUP: Integer;
    procedure MainShow;
    procedure LoadData;
    function RestoreMsg: boolean;
    function UpDateMsg: boolean;
    function NewLoginDB(sName, sCoName, sPath: string): boolean;
    procedure BackUpAccount;
    procedure RestoreAccount;
    procedure UpDateAccount;
    function UpDateImport(sOldPath, sNewPath: string): Boolean;
  public
    { Public declarations }
  end;
function BackupAccountShow(lBackUP: Integer): Boolean;
{lBackUP:=0 备份,lBackUP=1 恢复,lBackUP=2升级}
implementation

uses DBData;
{$R *.dfm}

function BackupAccountShow(lBackUP: Integer): Boolean;
var
  frmBackupAccount: TfrmBackupAccount;
begin
  frmBackupAccount := TfrmBackupAccount.Create(Application);
  with frmBackupAccount do
  begin
    lPubBackUP := lBackUP;
    MainShow;
    Result := bReturn;
    Free;
  end;
end;

procedure TfrmBackupAccount.MainShow;
begin
  bReturn := False;
  LoadData;
  ShowModal;
end;

procedure TfrmBackupAccount.LoadData;
begin
  case lPubBackUP of
    1: PageControl.TabIndex := 1;
    2: PageControl.TabIndex := 2;
  else
    PageControl.TabIndex := 0;
  end;
  edtBackup.Text := GetExePath + FILE_BACKUP_DIR + '\' + SYSAccountBookName +
    DateToStr2(Now) + '.RBAK';
  OpenDlg.InitialDir := GetExePath + FILE_BACKUP_DIR;
end;

function TfrmBackupAccount.RestoreMsg: boolean;
begin
  Result := CheckEditEmpty(1, self, [lblName.Name, lblCoName.Name],
    [edtName.Name, edtCoName.Name]);
  if not Result then Exit;
  if edtRestore.Text = '' then
  begin
    MsgBox('新输入账套路径!', '提示', MB_OK);
    Result := false;
  end
  else
    if Pos(':\', edtRestore.Text) = 0 then
    begin
      MsgBox('新输入完整账套路径!', '提示', MB_OK);
      Result := false;
    end
    else
      if not FileExists(edtRestore.Text) then
      begin
        MsgBox('系统找不到指定的文件!', '提示', MB_OK);
        Result := False;
      end
      else
        if not GetDataSetEmptyEx(frmData.ADOConnetLogin, 'SELECT * FROM Login l Where l.Name=''' +
          Trim(edtName.Text) + '''') then
        begin
          ShowMsg('已存在相同名称的账套,不能继续,请在账套管理器中删除同名账套!');
          Result := False;
        end;
end;

function TfrmBackupAccount.UpDateMsg: boolean;
begin
  Result := CheckEditEmpty(1, self, [lblName_u.Name, lblCoName_u.Name],
    [edtName_u.Name, edtCoName_u.Name]);
  if not Result then
    Exit;
  if edtUpdate.Text = '' then
  begin
    MsgBox('新输入账套路径!', '提示', MB_OK);
    Result := false;
  end
  else
    if Pos(':\', edtUpdate.Text) = 0 then
    begin
      MsgBox('新输入完整账套路径!', '提示', MB_OK);
      Result := false;
    end
    else
      if not FileExists(edtUpdate.Text) then
      begin
        MsgBox('系统找不到指定的文件!', '提示', MB_OK);
      end
      else
        if not GetDataSetEmptyEx(frmData.ADOConnetLogin, 'SELECT * FROM Login l Where l.Name=''' +
          Trim(edtName_u.Text) + '''') then
        begin
          ShowMsg('已存在相同名称的账套,不能继续,请在账套管理器中删除同名账套!');
          Result := False;
        end;
end;

procedure TfrmBackupAccount.bbOkClick(Sender: TObject);
begin
  inherited;
  case PageControl.TabIndex of
    0: BackUpAccount;
    1: RestoreAccount;
    2: UpDateAccount;
  end;
  if bReturn = True then
    Close;
end;

procedure TfrmBackupAccount.BackUpAccount;
begin
  if CopyFile(pchar(SYSAccountBookPath), pchar(edtBackup.Text), False) then
  begin
    ShowMsg('备份数据成功!文件路径是' + edtBackup.Text);
    bReturn := True;
  end
  else
    ShowMsg('备份数据失败,请检查文件路径是否正确?');
end;

function TfrmBackupAccount.NewLoginDB(sName, sCoName, sPath: string): boolean;
var
  sSql: string;
begin
  Result := False;
  sSql := 'SELECT * FROM Login l ';
  if not OpenDataSetEx(frmData.ADOConnetLogin, ADOSetLogin, sSql) then Exit;
  ADOSetLogin.Insert;
  ADOSetLogin.FieldByName('Name').AsString := sName;
  ADOSetLogin.FieldByName('CoName').AsString := sCoName;
  ADOSetLogin.FieldByName('Path').AsString := sPath;
  Result := SaveDataSet(ADOSetLogin, False);
  ADOSetLogin.Close;
end;

procedure TfrmBackupAccount.RestoreAccount;
var
  sFile: string;
begin
  if not RestoreMsg then Exit;
  sFile := GetExePath + FILE_DATA_DIR + '\' + edtName.Text + '.RDB';
  if not CopyFile(pchar(edtRestore.Text), pchar(sFile), False) then Exit;
  if NewLoginDB(edtName.Text, edtCoName.Text, sFile) then
  begin
    ShowMsg('账套' + edtName.Text + '恢复成功!');
    bReturn := True;
  end;
end;

function TfrmBackupAccount.UpDateImport(sOldPath, sNewPath: string): Boolean;
var
  ADOCon1, ADOCon2: TADOConnection;
  ADOSet1, ADOSet2: TADODataSet;
  sSql: string;
  function Start2Connect: Boolean;
  begin
    Result := False;
    with ADOCon1 do
    begin
      ADOCon1 := TADOConnection.Create(Self);
      if Connected = True then Close;
      ConnectionString := GetConnectionString(sOldPath);
      LoginPrompt := False;
      Open('Admin', '');
      if Connected = False then //以前的没有密码现在有密码
      begin
        ConnectionString := GetConnectionStringOld(sOldPath);
        LoginPrompt := False;
        Open('Admin', '');
        if Connected = False then Exit;
      end;
    end;
    with ADOCon2 do
    begin
      ADOCon2 := TADOConnection.Create(Self);
      if Connected = True then Close;
      ConnectionString := GetConnectionString(sNewPath);
      LoginPrompt := False;
      Open('Admin', '');
      if Connected = False then Exit;
    end;
    Result := True;
  end;
begin
  Result := False;
  if not Start2Connect then Exit;
  ADOSet1 := TADODataSet.Create(nil);
  ADOSet2 := TADODataSet.Create(nil);
  sSql := 'SELECT * FROM BaseInfo'; //小信息
  if OpenDataSetEx(ADOCon1, ADOSet1, sSql) and OpenDataSetEx(ADOCon2, ADOSet2, sSql) then
    DataSetImport(ADOSet1, ADOSet2);
  sSql := 'SELECT * FROM Depot'; //仓库
  if OpenDataSetEx(ADOCon1, ADOSet1, sSql) and OpenDataSetEx(ADOCon2, ADOSet2, sSql) then
    DataSetImport(ADOSet1, ADOSet2);
  sSql := 'SELECT * FROM Employe'; //职员
  if OpenDataSetEx(ADOCon1, ADOSet1, sSql) and OpenDataSetEx(ADOCon2, ADOSet2, sSql) then
    DataSetImport(ADOSet1, ADOSet2);
  sSql := 'SELECT * FROM Unit'; //单位
  if OpenDataSetEx(ADOCon1, ADOSet1, sSql) and OpenDataSetEx(ADOCon2, ADOSet2, sSql) then
    DataSetImport(ADOSet1, ADOSet2);
  sSql := 'SELECT * FROM Ware'; //商品
  if OpenDataSetEx(ADOCon1, ADOSet1, sSql) and OpenDataSetEx(ADOCon2, ADOSet2, sSql) then
    DataSetImport(ADOSet1, ADOSet2);
  sSql := 'DELETE FROM BillSetup '; //初始单据配置
  ExecSql(sSql);
  ADOSet1.Free;
  ADOSet2.Free;
  Result := True;
end;

procedure TfrmBackupAccount.UpDateAccount;
var
  sFile: string;
  function SaveMdbFile(sPath: string): Boolean;
  begin
    Result := True;
    if Result and not ResSaveMainDB(GetExePath, 'MainDB', sPath) then
    begin
      MsgBox('新建账套失败,请重新选择路径!', '提示', MB_OK);
      Result := False;
    end;
  end;
begin
  if not UpDateMsg then Exit;
  sFile := GetExePath + FILE_DATA_DIR + '\' + edtName_u.Text + '.RDB';
  if not SaveMdbFile(sFile) then Exit;
  if not NewLoginDB(edtName_u.Text, edtCoName_u.Text, sFile) then Exit;
  if not UpDateImport(edtUpdate.Text, sFile) then Exit;
  bReturn := True;
  ShowMsg('恭喜您,升级账套成功!');
end;

procedure TfrmBackupAccount.edtBackupButtonClick(Sender: TObject;
  AbsoluteIndex: Integer);
begin
  inherited;
  SaveFileDialog.FileName := edtBackup.Text;
  if SaveFileDialog.Execute then
  begin
    edtBackup.Text := SaveFileDialog.FileName;
  end;
end;

procedure TfrmBackupAccount.bbNoClick(Sender: TObject);
begin
  inherited;
  Close;
end;

procedure TfrmBackupAccount.edtRestoreButtonClick(Sender: TObject;
  AbsoluteIndex: Integer);
begin
  inherited;
  if OpenDlg.Execute then
  begin
    edtRestore.Text := OpenDlg.FileName;
  end;
end;

procedure TfrmBackupAccount.edtUpdateButtonClick(Sender: TObject;
  AbsoluteIndex: Integer);
begin
  inherited;
  if OpenDlg.Execute then
  begin
    edtUpdate.Text := OpenDlg.FileName;
  end;
end;

end.



//此源码由程序太平洋收集整理发布,任何人都可自由转载,但需保留本站信息
//╭⌒╮┅~ ¤ 欢迎光临程序太平洋╭⌒╮
//╭⌒╭⌒╮╭⌒╮~╭⌒╮  ︶  ,︶︶
//,︶︶︶︶,''︶~~ ,''~︶︶  ,''
//╔ ╱◥███◣═╬╬╬╬╬╬╬╬╬╗
//╬ ︱田︱田 田 ︱          ╬
//╬       http://www.5ivb.net ╬
//╬  ╭○╮●                     ╬
//╬  /■\/■\                    ╬
//╬   <| ||    有希望,就有成功! ╬
//╬                 ╬
//╚╬╬╬╬╬╬╬╬╬╬╗  ╔╬╬╬╬╝
//
//说明:
//专业提供VB、.NET、Delphi、ASP、PB源码下载
//包括:程序源码,控件,商业源码,系统方案,开发工具,书籍教程,技术文档

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -