📄 createaccount.pas
字号:
unit createaccount;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Base, StdCtrls, ExtCtrls, inifiles, DB, ADODB;
type
Tfrmcreateaccount = class(TfrmBase)
btnexit: TButton;
Bevel1: TBevel;
btnok: TButton;
Label1: TLabel;
GroupBox1: TGroupBox;
Label4: TLabel;
Label7: TLabel;
Label8: TLabel;
Label2: TLabel;
Label3: TLabel;
Edit4: TEdit;
Edit3: TEdit;
Edit5: TEdit;
Edit2: TEdit;
Edit1: TEdit;
procedure btnexitClick(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure btnokClick(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
frmcreateaccount: Tfrmcreateaccount;
implementation
uses Data, Global, Login;
{$R *.dfm}
procedure Tfrmcreateaccount.btnexitClick(Sender: TObject);
begin
inherited;
close;
end;
procedure Tfrmcreateaccount.FormClose(Sender: TObject; var Action: TCloseAction);
begin
inherited;
frmcreateaccount:=nil;
end;
procedure Tfrmcreateaccount.btnokClick(Sender: TObject);
var
s:string;
ini:Tinifile;
cdadoquery:Tadoquery;
begin
inherited;
AccountName:='';
if edit1.Text = '' then
begin
messagedlg('数据库连接用户不能为空 ! ',mtError,[mbok],0);
exit;
end;
if edit2.Text = '' then
begin
messagedlg('数据库连接密码不能为空 ! ',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
else
AccountName:=Trim(edit4.Text);
s:=ExtractFilePath(application.ExeName);
if s[length(s)]<>'\' then
s:=S+'\'+'Databasetset.ini'
else
s:=s+'Databaseset.ini';
try
ini:=Tinifile.Create(s);
if (Trim(ini.ReadString('Login','PassWord',''))<>Trim(edit2.Text)) or
(Trim(ini.ReadString('Login','UserName',''))<>Trim(edit1.Text)) then
begin
messagedlg('数据库用户或密码不正确,不能创建数据库 ! ',mterror,[mbok],0);
exit;
end;
finally
ini.Free;
end;
with Datam do
begin
adoqmasters.close;
adoqmasters.sql.Clear;
adoqmasters.sql.Add('Use Master ');
adoqmasters.sql.Add('Select databasename from creativejxc where databasename=:databasename');
adoqmasters.Parameters.ParamByName('databasename').Value:=edit4.text;
adoqmasters.open;
end;
if datam.adoqmasters.RecordCount > 0 then
begin
messagedlg('已经有相同的数据库名称存在,请重新输入数据库名 ! ',mtError,[mbok],0);
edit5.Text:='';
edit5.SetFocus;
exit;
end;
if not DirectoryExists(gs_appPath+'\Data') then
createDir(gs_appPath+'\Data');
try
Screen.Cursor :=crSqlWait;
with datam.adoqmasters do
begin
close;
sql.Clear;
sql.Text:='Insert into [Master]..creativejxc(accountname,databasename,remark) values(:accountname,:databasename,:remark)';
parameters.ParamByName('accountname').Value:=Trim(edit3.Text);
parameters.ParamByName('databasename').Value:=Trim(edit4.Text);
parameters.ParamByName('remark').Value:=Trim(edit5.Text);
ExecSql;
end;
with datam.adoqmasters do
begin
close;
sql.Clear;
sql.Text:='Use Master ';
sql.Text:=Sql.Text+' Create DataBase '+Edit4.Text;
sql.Text:=Sql.Text+' on ';
sql.Text:=Sql.Text+' (';
sql.Text:=Sql.Text+'name='+edit4.Text+'_Data,';
sql.Text:=Sql.Text+'filename='+quotedstr(gs_appPath+'\Data\'+edit4.Text+'_data.mdf ');
sql.Text:=Sql.Text+')';
sql.Text:=Sql.Text+'log on ';
sql.Text:=Sql.Text+'( ';
sql.Text:=Sql.Text+'name='+edit4.Text+'_Log,';
sql.Text:=Sql.Text+'filename='+quotedstr(gs_appPath+'\Data\'+edit4.Text+'_Log.ldf ');
sql.Text:=Sql.Text+')';
ExecSql;
end;
except
on E:Exception do
begin
Screen.Cursor :=crDefault;
messagedlg('创建数据库失败!'+#13#10+E.Message,mtError,[mbOk],0);
exit;
end;
end;
try
Screen.Cursor :=crSqlWait;
try
cdadoquery:=Tadoquery.Create(nil);
cdadoquery.Connection:=Datam.AdoConnection;
cdadoquery.CacheSize:=1000;
cdadoquery.CursorType:=ctStatic;
cdadoquery.LockType:=ltBatchOptimistic;
with cdadoquery do
begin
close;
sql.Clear;
sql.add('use Master ALTER DATABASE '+Trim(Edit4.text)+' set offline with rollback immediate ');
sql.add(' RESTORE DATABASE '+Trim(Edit4.text)+' FROM DISK ='+quotedstr(gs_appPath+'\sqldata\creativejxc'));
sql.add(' with file=1,replace, ');
sql.Add('MOVE '+Quotedstr('creativejxc_data')+' TO '+Quotedstr(gs_appPath+'\Data\'+Edit4.text+'_creative_data.mdf')+',');
sql.Add('MOVE '+Quotedstr('creativejxc_Log')+' TO '+Quotedstr(gs_appPath+'\Data\'+Edit4.text+'_creative_log.ldf'));
sql.add(' alter database '+Edit4.text+' set online with rollback immediate ');
sql.Add(' Use '+Edit4.text);
p_WriteMainINI('RestoreDatabase','RestoreDB',sql.Text );
ExecSQL;
end;
finally
cdadoquery.Free;
end;
except
on E:Exception do
begin
Screen.Cursor :=crDefault;
messagedlg('还原数据库失败!'+#13#10+E.Message,mtError,[mbOk],0);
exit;
end;
end;
try
with Datam.adoqmasters do
begin
close;
sql.Clear;
sql.Add('insert into ['+Edit4.Text+']..tuser(fcode,fname,fpwd,fadmin) values('+
quotedstr('admin')+','+quotedstr('超级用户')+','+quotedstr('888888')+
','+vartosql('1')+')');
ExecSql;
end;
except
on E:exception do
begin
messagedlg('创建数据库之后还原不成功,请联系统管理员 ! '+#10#13+E.Message,mtError,[mbok],0);
Exit;
end;
end;
edit1.Text:='';
edit2.Text:='';
frmlogin.refenceDatabase;
Screen.Cursor :=crDefault;
application.MessageBox('创建数据库成功 ! ','东创卓越2005',MB_OK+MB_iconWarning);
Close;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -