📄 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 + -