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

📄 createdb.pas

📁 车辆管理系统
💻 PAS
字号:
unit CreateDB;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, Base_C, ExtCtrls, StdCtrls, inifiles, DBClient, DB;

type
  TfrmCreateDB = class(TfrmBase_C)
    GroupBox1: TGroupBox;
    Label1: TLabel;
    Edit1: TEdit;
    Label2: TLabel;
    Edit2: TEdit;
    Label3: TLabel;
    Edit3: TEdit;
    Edit4: TEdit;
    Label4: TLabel;
    Label5: TLabel;
    Bevel1: TBevel;
    Label6: TLabel;
    Bevel2: TBevel;
    Label7: TLabel;
    Edit5: TEdit;
    Edit6: TEdit;
    Label8: TLabel;
    Label9: TLabel;
    CDSisunique: TClientDataSet;
    tbnExit: TButton;
    tbnOK: TButton;
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure tbnExitClick(Sender: TObject);
    procedure tbnOKClick(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  frmCreateDB: TfrmCreateDB;

implementation

uses Global, DataProcess;

{$R *.dfm}

procedure TfrmCreateDB.FormClose(Sender: TObject;
  var Action: TCloseAction);
begin
  inherited;
  frmCreateDB:=nil;
end;

procedure TfrmCreateDB.tbnExitClick(Sender: TObject);
begin
  inherited;
  Close;
end;

procedure TfrmCreateDB.tbnOKClick(Sender: TObject);
var
  S:String;
  ini:Tinifile;
  cmdStr:String;
  cmdStr1:String;
  cmdStr2:String;
begin
  inherited;
  if edit1.Text='' then
    begin
      messagedlg('SQL登录名不能为空 ! ',mtError,[mbok],0);
      exit;
    end;
  if edit2.Text='' then
    begin
      messagedlg('SQL密码不能为空 ! ',mtError,[mbok],0);
      exit;
    end;
  if edit3.Text='' then
    begin
      messagedlg('主机地址不能为空 ! ',mtError,[mbok],0);
      exit;
    end;
  if edit4.Text='' then
    begin
      messagedlg('公司名称不为能为空 ! ',mtError,[mbok],0);
      exit;
    end;
  if edit5.Text='' then
    begin
      messagedlg('帐套信息不能为空 !',mtError,[mbok],0);
      exit;
    end;
  if edit6.Text='' then
    begin
      messagedlg('帐套名称不能为空 ! ',mtError,[mbok],0);
      exit;
    end;

  s:=GetLogDir('Log')+'adolinksetting.ini';
  if not fileExists(s) then
    begin
      messagedlg('sql验证文件不存在 ! ',mtError,[mbok],0);
      Exit;
    end;

  try
    ini:=Tinifile.Create(s);
    if Trim(uppercase(edit1.Text))<>Trim(uppercase(ini.ReadString('Login','User ID',''))) then
      begin
        messagedlg('SQL用户名不正确 ! ',mtError,[mbok],0);
        Exit;
      end;
    if Trim(edit2.Text)<>Trim(f_inencrypt(ini.ReadString('Login','Password',''))) then
      begin
        messagedlg('SQL密码不正确 ! ',mtError,[mbok],0);
        Exit;
      end;
    if Trim(uppercase(edit3.Text))<>Trim(uppercase(ini.ReadString('Login','Server Name',''))) then
      begin
        messagedlg('主机地址不正确 ! ',mtError,[mbok],0);
        Exit;
      end;
  finally
    ini.Free;
  end;

  if GetsqlData(CDSisunique,'Master..ErpDB','fid','fid>0',10) then
    begin
      if Trim(CDSisunique.FieldByName('dbname').AsString)=Trim(edit5.Text) then
        begin
          messagedlg('当前数据库名称已经存在 ! ',mtError,[mbok],0);
          Exit;
        end;
    end;

  if not DirectoryExists(GetLogDir('Data')) then
    createDir(GetLogDir('Data'));

  cmdStr:='';
  cmdStr1:='';
  cmdStr2:='';

  try
  screen.Cursor:=crSqlWait;

  cmdStr:='Use Master ';
  cmdStr:=cmdStr+' Create DataBase '+Edit5.Text;
  cmdStr:=cmdStr+' on';
  cmdStr:=cmdStr+' (';
  cmdStr:=cmdStr+'name='+edit5.Text+'_Data,';
  cmdStr:=cmdStr+'filename='+quotedstr(GetLogDir('Data')+edit5.Text+'_data.mdf ');
  cmdStr:=cmdStr+')';
  cmdStr:=cmdStr+' log on ';
  cmdStr:=cmdStr+'( ';
  cmdStr:=cmdStr+'name='+edit5.Text+'_Log,';
  cmdStr:=cmdStr+'filename='+quotedstr(GetLogDir('Data')+edit5.Text+'_Log.ldf ');
  cmdStr:=cmdStr+')';
  if cexecsql(cmdStr) then
    begin
      cmdStr1:='use Master ALTER DATABASE '+Trim(Edit5.text)+' set offline with rollback immediate ';
      cmdStr1:=cmdStr1+' RESTORE DATABASE '+Trim(Edit5.text)+' FROM DISK ='+quotedstr(GetLogDir('sqldata')+'erpdb');
      cmdStr1:=cmdStr1+' with file=1,replace, ';
      cmdStr1:=cmdStr1+'MOVE '+Quotedstr('erpdb_data')+' TO '+Quotedstr(GetLogDir('Data')+Edit5.text+'_erpdb_data.mdf')+',';
      cmdStr1:=cmdStr1+'MOVE '+Quotedstr('erpdb_Log')+' TO '+Quotedstr(GetLogDir('Data')+Edit5.text+'_erpdb_log.ldf');
      cmdStr1:=cmdStr1+' alter database '+Edit5.text+' set online with rollback immediate ';
      cmdStr1:=cmdStr1+' Use '+Edit5.text;
      if cexecsql(cmdStr1) then
        begin
          cmdStr2:='insert into Master..erpdb(accname,dbname,remark) values('+
                vartosql(edit4.Text)+','+vartosql(edit5.Text)+','+vartosql(edit6.Text)+')';
          if cexecsql(cmdStr2) then
            begin
              messagedlg('创建数据库成功 ! ',mtwarning,[mbok],0);
              csyslog(self.Name,'创建数据库 !'+edit5.Text);
              frmcreatedb.Close;
            end;
        end
    end
    else
    begin
      messagedlg('',mtError,[mbok],0);
      csyslog(self.Name,'创建数据库失败 ! '+edit5.Text);
      Exit;
    end;
  except
    on E:Exception do
      begin
        cExecsql('Use '+gs_GetDBName);
        screen.Cursor:=crDefault;
        messagedlg('创建数据库失败 ! '+#10#13+E.Message,mtError,[mbok],0);
        Exit;
      end;
  end;
  cExecsql('Use '+gs_GetDBName);
  screen.Cursor:=crDefault;
end;

end.

⌨️ 快捷键说明

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