📄 createdb.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 + -