📄 u_setup_sql.pas
字号:
unit U_setup_sql;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
Db, ADODB, StdCtrls, Buttons, ComCtrls,Registry, SUIButton, ExtCtrls,
SUIForm, SUIDlg, SUIEdit, IniFiles, ComObj, Variants;
type
TF_setup_sql = class(TForm)
suiForm1: TsuiForm;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
StatusBar1: TStatusBar;
BtnTest: TsuiButton;
BtnCreate: TsuiButton;
BtnContinue: TsuiButton;
suiMessageDialog1: TsuiMessageDialog;
Label4: TLabel;
suiRadioButton_NT: TsuiRadioButton;
suiRadioButton_NP: TsuiRadioButton;
suiEdit_ServerName: TsuiEdit;
suiEdit_UserName: TsuiEdit;
suiEdit_Password: TsuiEdit;
conADOC_Sql: TADOConnection;
procedure BtnTestClick(Sender: TObject);
procedure BtnCreateClick(Sender: TObject);
procedure BtnContinueClick(Sender: TObject);
procedure suiRadioButton_NTClick(Sender: TObject);
procedure suiRadioButton_NPClick(Sender: TObject);
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
procedure SoftRegister();
end;
var
F_setup_sql: TF_setup_sql;
Syspath : String;
ServerName , Login, Pwd : string ;
LoginSecure : Boolean ;
procedure DelayMsec(x : LongInt);
implementation
{$R *.DFM}
procedure DelayMsec(x : LongInt);
var FirstCount : LongInt ;
begin
FirstCount := GetTickCount ;
repeat ;
Application.ProcessMessages ;
until ((GetTickCount - FirstCount) >= x);
end;
procedure TF_setup_sql.softRegister();
var
MyRegistry: TRegistry;
DriverStr : String;
begin
//写注册表
MyRegistry := TRegistry.Create;
try
MyRegistry.RootKey := HKEY_LOCAL_MACHINE;
MyRegistry.OpenKey('\Software\ODBC\ODBCINST.INI\SQL Server',False);
if not MyRegistry.ValueExists('Driver') then begin
suiMessageDialog1.Caption := Self.Caption ;
suiMessageDialog1.Text := '请先安装Microsoft SQL Server数据引擎(MSDE)!';
suiMessageDialog1.ShowModal ;
MyRegistry.Free ;
Application.Destroy ;
end else
DriverStr := MyRegistry.ReadString('Driver');
MyRegistry.OpenKey('\Software\ODBC\ODBC.INI\ODBC Data Sources',True);
MyRegistry.WriteString('销售帐务管理','SQL Server');
MyRegistry.OpenKey('\Software\ODBC\ODBC.INI\销售帐务管理', True);
MyRegistry.WriteString('Database','销售帐务管理');
MyRegistry.WriteString('Driver',DriverStr);
MyRegistry.WriteString('LastUser',Trim(suiEdit_UserName.text));
MyRegistry.WriteString('Server',Trim(suiEdit_ServerName.text));
finally
MyRegistry.Free;
end;
end;
procedure TF_setup_sql.BtnTestClick(Sender: TObject);
var IniFile : TIniFile;
begin
//连接数据库
btnCreate.Enabled := false;
btnContinue.Enabled := false;
if conADOC_sql.Connected then conADOC_sql.Connected := False;
try
if suiRadioButton_NT.Checked then
conADOC_sql.ConnectionString := 'Provider=SQLOLEDB;Integrated Security=SSPI;'+
'Persist Security Info=False;'+
'Initial Catalog=Master;Data Source='+
Trim(suiEdit_ServerName.Text)
else
conADOC_sql.ConnectionString := 'Provider=SQLOLEDB;Password=' + Trim(suiEdit_Password.Text) +
';Persist Security Info=True;User ID='+Trim(suiEdit_UserName.Text)+
';Initial Catalog=master;Data Source='+Trim(suiEdit_ServerName.Text);
conADOC_sql.Connected := true;
btnCreate.Enabled := true ;
btnContinue.Enabled := false ;
StatusBar1.SimpleText := '数据库服务器连接成功。';
LoginSecure := suiRadioButton_NT.Checked ; //登录方式
ServerName := Trim(suiEdit_ServerName.Text) ;//服务器名
Login := Trim(suiEdit_UserName.Text) ;//登录用户名
Pwd := Trim(suiEdit_Password.Text) ;//登录密码
except
on E : Exception do
begin
BtnContinue.Enabled := true;
suiMessageDialog1.Caption := Self.Caption ;
suiMessageDialog1.IconType := suiStop;
suiMessageDialog1.Text := '数据库服务器测试连接失败,错误信息如下:'+
Chr(13)+Chr(10)+E.Message ;
suiMessageDialog1.ShowModal ;
end;
end;
end;
procedure TF_setup_sql.BtnCreateClick(Sender: TObject);
var oRestore : OLEVariant;//OLE对象
oServer : OLEVariant;//OLE对象
DBName,FileName,S : String;
begin
FileName := Syspath + 'DB\销售帐务管理.dbk' ;
//备份恢复
oServer := CreateOleObject('SQLDMO.SQLServer'); //建立SERVER对象
oServer.LoginSecure := LoginSecure ;
oServer.Connect(ServerName,Login,Pwd); //连接到你的服务器
try
oRestore := CreateOleObject('SQLDMO.Restore');
oRestore.Database := '销售帐务管理' ;
oRestore.Files := FileName ;
oRestore.Password := '8899';//如果不加密码,恢复失败
suiMessageDialog1.ButtonCount := 2;
suiMessageDialog1.Button1Caption := '是(&S)';
suiMessageDialog1.Button1ModalResult := mrYes;
suiMessageDialog1.Button2Caption := '否(&N)';
suiMessageDialog1.Button2ModalResult := mrNo;
suiMessageDialog1.IconType := suiHelp;
suiMessageDialog1.Caption := Self.Caption ;
suiMessageDialog1.Text := '是否覆盖原有数据库?';
oRestore.ReplaceDatabase := suiMessageDialog1.ShowModal = MrYes ;//是否覆盖
oRestore.SQLRestore(oServer);
BtnContinue.Enabled := true ;
SoftRegister();
finally
oServer := Unassigned ;
oRestore := Unassigned ;
end;
StatusBar1.SimpleText := '数据环境搭建完毕,正在编写系统注册表...';
DelayMsec(10);
btnContinue.Enabled := true;
btnCreate.Enabled := false;
StatusBar1.SimpleText := '软件所有运行环境搭建完毕,可以开始使用本软件,GOOD LUCK!';
DelayMsec(10);
end;
procedure TF_setup_sql.BtnContinueClick(Sender: TObject);
var F : TextFile;
begin
AssignFile(F,SysPath+'ODBC.MRK');
ReWrite(F);
WriteLn(F,'数据库创建标志文件,请勿删除!');
CloseFile(F);
close;
end;
procedure TF_setup_sql.suiRadioButton_NTClick(Sender: TObject);
begin
Label2.Enabled := not suiRadioButton_Nt.Checked ;
Label3.Enabled := not suiRadioButton_Nt.Checked ;
suiEdit_UserName.Text := '';
suiEdit_Password.Text := '';
suiEdit_UserName.Enabled := not suiRadioButton_Nt.Checked ;
suiEdit_Password.Enabled := not suiRadioButton_Nt.Checked ;
end;
procedure TF_setup_sql.suiRadioButton_NPClick(Sender: TObject);
begin
suiEdit_UserName.Text := 'SA';
suiEdit_Password.Text := '';
Label2.Enabled := suiRadioButton_Nt.Checked ;
Label3.Enabled := suiRadioButton_Nt.Checked ;
suiEdit_UserName.Enabled := suiRadioButton_Nt.Checked ;
suiEdit_Password.Enabled := suiRadioButton_Nt.Checked ;
end;
procedure TF_setup_sql.FormCreate(Sender: TObject);
begin
Syspath := ExtractFilePath(Application.ExeName);
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -