?? unit1.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 + -