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

📄 u_setup_sql.pas

📁 销售帐目管理
💻 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 + -