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

📄 unit1.pas

📁 可以查找局域网中的SQLServer2000服务器
💻 PAS
字号:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Controls,
  StdCtrls, Classes, Graphics, Forms,
  Dialogs, ComObj, DB, ADODB, Grids, DBGrids, ExtCtrls, ComCtrls, Buttons;

type
  TfrmMain = class(TForm)
    Panel1: TPanel;
    DataSource1: TDataSource;
    adoqDataBae: TADOQuery;
    pgcDataBase: TPageControl;
    TabSheet1: TTabSheet;
    Panel3: TPanel;
    Image1: TImage;
    Label1: TLabel;
    Label2: TLabel;
    CmbxServer: TComboBox;
    Label3: TLabel;
    edtDataBase_UserName: TEdit;
    edtDataBase_UserPass: TEdit;
    Label5: TLabel;
    Label4: TLabel;
    Bevel1: TBevel;
    Bevel2: TBevel;
    BitBtn1: TBitBtn;
    BitBtn2: TBitBtn;
    GroupBox1: TGroupBox;
    rbLoginSign_Win: TRadioButton;
    rbLoginSign_Sql: TRadioButton;
    TabSheet2: TTabSheet;
    Panel4: TPanel;
    Image2: TImage;
    GroupBox2: TGroupBox;
    Label6: TLabel;
    Label7: TLabel;
    cmbDataBase: TComboBox;
    Label8: TLabel;
    btnText_Database: TBitBtn;
    Bevel3: TBevel;
    BitBtn4: TBitBtn;
    BitBtn5: TBitBtn;
    adocDataBase: TADOConnection;
    Label9: TLabel;
    Bevel4: TBevel;
    memDataBaseConnStr: TMemo;
    memCompany: TMemo;
    edtCompany: TEdit;
    btnSaveCompany: TBitBtn;
    ADOTable1: TADOTable;
    DBGrid1: TDBGrid;
    Button1: TButton;
    procedure FormCreate(Sender: TObject);
    procedure rbLoginSign_WinClick(Sender: TObject);
    procedure rbLoginSign_SqlClick(Sender: TObject);
    procedure BitBtn1Click(Sender: TObject);
    procedure btnText_DatabaseClick(Sender: TObject);
    procedure cmbDataBaseChange(Sender: TObject);
    procedure FormShow(Sender: TObject);
    procedure btnSaveCompanyClick(Sender: TObject);
    procedure BitBtn5Click(Sender: TObject);
    procedure BitBtn2Click(Sender: TObject);
    procedure BitBtn4Click(Sender: TObject);
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
    SqlConnStr:string;                 //系统  连接字符串
    Result_SqlConnStr :string;                 //系统   最终连接字符串
  end;

var
  frmMain: TfrmMain;
 // App:_application;
 // Backup :_Backup;
 // Restore :_Restore;

implementation

{$R *.dfm}

procedure TfrmMain.FormShow(Sender: TObject);
begin
  edtCompany.Text:='';
  btnsavecompany.Enabled:=false;
  frmMain.TabSheet1.TabVisible:=true;
  frmmain.TabSheet2.TabVisible:=false;
end;

//获得所有局域网内部SQL2000服务器名称。
procedure TfrmMain.FormCreate(Sender: TObject);
var
  SQLServer:Variant;
  ServerList:Variant;
  i,nServers:integer;
begin
  rbLoginSign_Win.Checked:=true;
  edtDataBase_UserName.Enabled:=false;
  edtDataBase_UserPass.Enabled:=false;;
  edtDataBase_UserName.Text:='sa';
  edtDataBase_UserPass.Text:='';
  SQLServer := CreateOleObject('SQLDMO.Application');
  ServerList:= SQLServer.ListAvailableSQLServers;

   //只是单纯地获得服务器名称,还应该获得数据库名才好拉。
  if serverlist.count<1 then
    begin //如果服务器不存在,则退出系统
      showmessage('     服务器不存在,请检测服务器是否已经开机或者服务是否打开了。');
      application.Terminate;
    end
  else
    begin
      CmbxServer.Items.Clear ;
      for i:=1 to serverlist.count do
        CmbxServer.Items.Add(serverlist.item(i));
        CmbxServer.ItemIndex:=0;
    end;
end;

procedure TfrmMain.rbLoginSign_WinClick(Sender: TObject);
begin
  edtDataBase_UserName.Enabled :=false;
  edtDataBase_UserPass.Enabled:=false;
end;

procedure TfrmMain.rbLoginSign_SqlClick(Sender: TObject);
begin
  edtDataBase_UserName.Enabled :=true;
  edtDataBase_UserPass.Enabled:=true;
end;

//连接你选择的服务器,并登陆选择登陆模式,通过认证 登陆数据库。
procedure TfrmMain.BitBtn1Click(Sender: TObject);
var
  DataBaseCount:integer;
begin
  if  rbLoginSign_Win.Checked  then                   //采用Windwos模式登陆的情况
    begin
      SqlConnStr:='Provider=SQLOLEDB.1;'+'Integrated Security=SSPI;Persist Security Info=False;'
                            +';Data Source='+CmbxServer.Text;
      adoqDataBae.ConnectionString:=SqlConnStr;
      with  adoqDataBae  do                                 //获得数据库名称列表
        begin
          close;
          sql.Clear ;
          sql.Add('select name from master.dbo.sysdatabases');
          open;
        end;
      cmbDataBase.Items.Clear;                              //数据库列表框清空
      while  not  adoqDataBae.Eof  do                       //添加数据库列表进列表框
        begin
          cmbDataBase.Items.Add(adoqDataBae.fieldbyname('name').AsString );
          adoqDataBae.Next ;
        end;
      cmbDataBase.ItemIndex:=0;
      if  cmbDataBase.Items.Count<=0  then
        begin
          exit;
        end;
      frmMain.TabSheet1.TabVisible:=false;
      frmmain.TabSheet2.TabVisible:=true;
    end;

  if  rbLoginSign_Sql.Checked  then              //采用SQl2000模式登陆
    begin                                        //提示要求输入用户名
      if  edtDataBase_UserName.Text=''  then
        begin
          beep;
          messagebox(handle,'请输入用户名登陆!','新博人事辅助决策管理系统',mb_ok or mb_iconerror);
          edtDataBase_UserName.SetFocus ;
          exit;
        end;
      SqlConnStr:='Provider=SQLOLEDB.1;'+'password='+edtDataBase_UserPass.Text
                   +';Persist Security Info=True;User ID='+edtDataBase_UserName.Text
                   +';Data Source='+CmbxServer.Text;
      adoqDataBae.ConnectionString:=SqlConnStr;
      with  adoqDataBae  do                                 //获得数据库名称列表
        begin
          close;
          sql.Clear ;
          sql.Add('select name from master.dbo.sysdatabases');
          open;
        end;
      cmbDataBase.Items.Clear;                              //数据库列表框清空
      while  not  adoqDataBae.Eof  do                       //添加数据库列表进列表框
        begin
          cmbDataBase.Items.Add(adoqDataBae.fieldbyname('name').AsString );
          adoqDataBae.Next ;
        end;
      cmbDataBase.ItemIndex:=0;
      if  cmbDataBase.Items.Count<=0  then
        begin
          exit;
        end;
      frmMain.TabSheet1.TabVisible:=false;
      frmmain.TabSheet2.TabVisible:=true;
    end;
end;

procedure TfrmMain.cmbDataBaseChange(Sender: TObject);
begin
  btnText_Database.Enabled:=true;
  adocDataBase.Close ;
end;

//测试建立和数据库的连接。。。。
//并将数据库连接字符串和公司名称写入到数据库
procedure TfrmMain.btnText_DatabaseClick(Sender: TObject);
var
  ErrorStr:string;                       //  数据库错误连接字符串
  ExePathStr_SysConnection:string;      //  系统连接文本文件路径
begin
  ExePathStr_SysConnection:=Extractfilepath(application.ExeName)+'SysConnection.ini';
  if  rbLoginSign_Win.Checked  then
    begin
      Result_SqlConnStr:='Provider=SQLOLEDB.1;'+'Integrated Security=SSPI;Persist Security Info=False;'
                            + 'Initial Catalog='+cmbDataBase.Text
                            +';Data Source='+CmbxServer.Text;
    end
  else
    begin
      Result_SqlConnStr:='Provider=SQLOLEDB.1;'+'password='+edtDataBase_UserPass.Text
                   +';Persist Security Info=True;User ID='+edtDataBase_UserName.Text
                   +';Initial Catalog='+cmbDataBase.Text
                   +';Data Source='+CmbxServer.Text;
    end;
  try
    adocDataBase.ConnectionString:=Result_SqlConnStr;
    adocDataBase.Connected:=true;
    btnText_Database.Enabled:=false;
    messagebox(handle,'数据库连接成功!','新博人事辅助决策管理系统',mb_ok or MB_ICONINFORMATION);

    //数据库连接成功后,将开始保存数据库连接字符串和单位名称
    //将老的数据库连接字符串和单位信息显示出来,并删除原来信息,并保存新信息

    memDataBaseConnStr.Lines.LoadFromFile(ExePathStr_SysConnection);
    memDataBaseConnStr.Lines.Clear ;
    memDataBaseConnStr.Lines.Add(Result_SqlConnStr);
    memDataBaseConnStr.Lines.SaveToFile(ExePathStr_SysConnection);     //保存数据库连接字符串

    btnSaveCompany.Enabled:=true;
  except
    on E: Exception do
      begin
        ErrorStr:='数据库连接错误,请检查数据连接!'+#13+#13+' '+'www.Simple_Cs.com'+#13+#13+E.Message;
        MessageDlg(ErrorStr, mtInformation,[mbOk], 0);
      end;
    end;
end;

//保存单位信息
procedure TfrmMain.btnSaveCompanyClick(Sender: TObject);
var
  ExePathStr_Company:string;            //公司连接文本
begin
  ExePathStr_Company:=ExtractFilePath(application.ExeName)+'Company.ini';
  if  edtCompany.Text=''  then
    begin
      beep;
      messagebox(handle,'请输入使用单位名称!','新博人事辅助决策管理系统',mb_ok or mb_iconerror);
      exit;
    end;
  memCompany.Lines.LoadFromFile(ExePathStr_Company);
  memCompany.Lines.Clear ;
  memCompany.Lines.Add(edtCompany.Text);
  memCompany.Lines.SaveToFile(ExePathStr_Company) ;
  messagebox(handle,'完成数据库配置,并成功保存单位名称!','新博人事辅助决策管理系统',mb_ok or MB_ICONINFORMATION);
end;

procedure TfrmMain.BitBtn5Click(Sender: TObject);
begin
  if  messagebox(handle,'还没有完成数据库的配置,你确认退出?','注意...',MB_YESNO or MB_ICONWARNING)=mryes then
     application.Terminate ;
end;

procedure TfrmMain.BitBtn2Click(Sender: TObject);
begin
  if  messagebox(handle,'还没有完成数据库的配置,你确认退出?','注意...',MB_YESNO or MB_ICONWARNING)=mryes then
     application.Terminate ;
end;

procedure TfrmMain.BitBtn4Click(Sender: TObject);
var
  ExePathStr_Company:string;            //公司连接文本
begin
  ExePathStr_Company:=ExtractFilePath(application.ExeName)+'Company.ini';
  if  edtCompany.Text=''  then
    begin
      beep;
      messagebox(handle,'请输入使用单位名称!','新博人事辅助决策管理系统',mb_ok or mb_iconerror);
      exit;
    end;
  memCompany.Lines.LoadFromFile(ExePathStr_Company);
  memCompany.Lines.Clear ;
  memCompany.Lines.Add(edtCompany.Text);
  memCompany.Lines.SaveToFile(ExePathStr_Company) ;
  close;
end;

procedure TfrmMain.Button1Click(Sender: TObject);
begin
  adocDataBase.Close ;
  btnText_Database.Enabled:=false;
  btnSaveCompany.Enabled:=false;
  edtCompany.Clear ;
  frmMain.TabSheet1.TabVisible:=true;
  frmmain.TabSheet2.TabVisible:=false;
  adoqDataBae.Close ;
end;

end.

Provider=SQLOLEDB.1;Password=admin;
Persist Security Info=True;User ID=sa;
Data Source='+CmbxServer.Text;

  ConStr:=BaseConStr+'Password='+EdtPassWord.Text
              +';Persist Security Info=True;User ID='+EdtUser.Text
              +';Initial Catalog='+CmbxDatabase.Text
              +';Data Source='+CmbxServer.Text;


if RadioBtnWin.Checked then
  begin
    ConStr:=BaseConStr+'Integrated Security=SSPI;Persist Security Info=False;'+
              'Initial Catalog='+CmbxDatabase.Text +';Data Source='+
              CmbxServer.Text;
  end
  else
  begin
    ConStr:=BaseConStr+'Password='+EdtPassWord.Text
              +';Persist Security Info=True;User ID='+EdtUser.Text
              +';Initial Catalog='+CmbxDatabase.Text
              +';Data Source='+CmbxServer.Text;








              'Initial Catalog='+CmbxDatabase.Text +



⌨️ 快捷键说明

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