📄 dbconfig.pas
字号:
unit DBConfig;
interface
uses Windows, SysUtils, Classes, Graphics, Forms, Controls, StdCtrls,
Buttons, ComCtrls, ExtCtrls, ImgList, Dialogs, ExtDlgs,
DBCtrls, Db, ADODB,adoconed, Spin, FileCtrl, Grids, Outline, DirOutln;
type
TForm_DBConfig = class(TForm)
ImageList1: TImageList;
OpenPictureDialog1: TOpenPictureDialog;
ADOConnection1: TADOConnection;
OpenDialog1: TOpenDialog;
Panel1: TPanel;
PageControl1: TPageControl;
TabSheet1: TTabSheet;
Bevel2: TBevel;
Label9: TLabel;
Label6: TLabel;
Label7: TLabel;
Label_server: TLabel;
Label8: TLabel;
DBBtn: TSpeedButton;
ComboBox_DBtype: TComboBox;
Edit_DBName: TEdit;
Edit_account: TEdit;
Edit_password: TEdit;
Edit_Server: TEdit;
ConnectBtn: TBitBtn;
SaveConBtn: TBitBtn;
BitBtn4: TBitBtn;
BitBtn2: TBitBtn;
Label1: TLabel;
Label2: TLabel;
Edt_TimeOut: TSpinEdit;
TabSheet2: TTabSheet;
Btn_backup: TButton;
edt_dbname: TEdit;
Lbl_backname: TLabel;
GroupBox1: TGroupBox;
DriveComboBox1: TDriveComboBox;
DirectoryListBox1: TDirectoryListBox;
RadioGroup1: TRadioGroup;
ADOQ_Backup: TADOQuery;
Label4: TLabel;
Edt_backname: TEdit;
procedure FormShow(Sender: TObject);
procedure CancelBtnClick(Sender: TObject);
procedure ComboBox_DBtypeChange(Sender: TObject);
procedure SaveBtnClick(Sender: TObject);
procedure DBBtnClick(Sender: TObject);
procedure SaveConBtnClick(Sender: TObject);
procedure ConnectBtnClick(Sender: TObject);
procedure PageControl1Change(Sender: TObject);
procedure E_sampinKeyPress(Sender: TObject; var Key: Char);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure Btn_backupClick(Sender: TObject);
procedure DriveComboBox1Change(Sender: TObject);
procedure RadioGroup1Click(Sender: TObject);
private
{ Private declarations }
procedure dispdata();
Function ConnectTest(DispFlag:boolean):Boolean;
public
TmpDBConnectstring:string;
Tmpcompanylogo:string;
{ Public declarations }
end;
var
Form_DBConfig: TForm_DBConfig;
implementation
uses sharevar, sharefun, data;
{$R *.DFM}
//显示当前应用系统所登陆的数据库参数
procedure TForm_DBConfig.dispdata();
begin
//database setup
ComboBox_DBtype.ItemIndex:=SysConfig.DBTYPE;
Edit_DBName.Text:=SysConfig.DBName;
edit_server.text:=SysConfig.ServerName;
edit_account.text:=SysConfig.DBACCOUNT;
edit_password.text:=SysConfig.DBPASSWORD;
Edt_TimeOut.Value :=SysConfig.DBTimeOut;
end;
procedure TForm_DBConfig.FormShow(Sender: TObject);
begin
dispdata();
ComboBox_DBtypeChange(ComboBox_DBtype);
PageControl1.ActivePageIndex :=ReadIniFile(WsInteger,'TableSheet','FrmDBConfig');
end;
procedure TForm_DBConfig.CancelBtnClick(Sender: TObject);
begin
dispdata();
end;
procedure TForm_DBConfig.ComboBox_DBtypeChange(Sender: TObject);
begin
case ComboBox_DBtype.ItemIndex of
0..1:
begin
label_server.Visible :=false;
edit_server.Visible :=false;
DBBtn.Visible:=true;
end;
2:
begin
label_server.Visible :=true;
edit_server.visible:=true;
DBBtn.Visible:=false;
end;
end;
end;
procedure TForm_DBConfig.SaveBtnClick(Sender: TObject);
begin
if MsgQst(handle,'你确认保存当前的更改设置吗?')=mrNo then exit;
// if MessageDlg('你确认保存当前的更改设置吗?',mtConfirmation,[mbyes,mbno],0)=mrNo then exit;
end;
procedure TForm_DBConfig.DBBtnClick(Sender: TObject);
begin
OpenDialog1.Title :='指定数据库的路径';
OpenDialog1.Filter:='Database file (*.mdb)|*.mdb';
if OpenDialog1.Execute then
Edit_DBName.Text:=OpenDialog1.FileName;
end;
Function TForm_DBConfig.ConnectTest(DispFlag:boolean):Boolean;
var
ServerName,UID,PWD,DBName:string;
tmpstr:string;
DBType:integer;
begin
result:=false;
if trim(Edit_DBName.Text)='' then
begin
MsgErr(handle,'数据库名称不能为空!');
Edit_DBName.SetFocus;
exit;
end;
if (ComboBox_DBtype.ItemIndex=2) and (trim(edit_server.text)='') then
begin
MsgErr(handle,'数据库服务器名称不能为空!');
edit_server.SetFocus;
exit;
end;
DBName:=Edit_DBName.Text;
UID:=edit_account.text;
PWD:=trim(edit_password.text);
ServerName:=edit_server.text;
DBType:=ComboBox_DBtype.ItemIndex;
case DBType of
0: //Access *.mdb
begin
tmpstr:='Provider=Microsoft.Jet.OLEDB.4.0;Data Source='+DBName+';';
tmpstr :=tmpstr + 'Persist Security Info=False;Jet OLEDB:Database Password='+PWD+';';
tmpstr :=tmpstr + 'Persist Security Info=True;';
//Connect Testting
try
AdoConnection1.Connected:=false;
AdoConnection1.ConnectionString:='';
AdoConnection1.ConnectionString:=tmpstr;
AdoConnection1.CommandTimeout:=Edt_TimeOut.Value;
SysConfig.DBCONNECTSTRING:=tmpstr;
AdoConnection1.Connected :=True;
except
MsgErr(handle,'连接数据库失败!');
exit;
end;
end;
// 1: //Excel *.xls
// if not CreateDSN_EXCEL(DSN,DataBase,spath,'D&N Time SoftWare') then exit;
2: //SQL Server
begin
tmpstr:='Provider=SQLOLEDB.1;Password='+PWD+';';
tmpstr :=tmpstr + 'Persist Security Info=True;User ID='+UID+';';
tmpstr :=tmpstr + 'Initial Catalog='+DBName+';Data Source='+ServerName+';Use Procedure for Prepare=1;Auto Translate=True;Packet Size=4096;';
//Connect Testting
try
AdoConnection1.Connected:=false;
AdoConnection1.ConnectionString:='';
AdoConnection1.ConnectionString:=tmpstr;
AdoConnection1.CommandTimeout:=Edt_TimeOut.Value;
SysConfig.DBCONNECTSTRING:=tmpstr;
AdoConnection1.Connected :=True;
except
MsgErr(handle,'连接数据库失败!');
exit;
end;
end;
end;
//
AdoConnection1.Connected :=false;
result:=true;
if DispFlag then
MsgOK(handle,'连接数据库成功!');
end;
procedure TForm_DBConfig.SaveConBtnClick(Sender: TObject);
begin
if not ConnectTest(false) then exit;
if MessageDlg('你确认更改当前数据库接联接吗?',mtConfirmation,[mbyes,mbno],0)=mrNo then exit;
SysConfig.DBTYPE :=ComboBox_DBtype.ItemIndex;
SysConfig.SECURITY :='True';
SysConfig.DBName :=Edit_DBName.Text;
SysConfig.ServerName :=edit_server.text;
SysConfig.DBACCOUNT :=edit_account.text;
SysConfig.DBPASSWORD :=edit_password.text;
SysConfig.DBTimeOut :=Edt_TimeOut.value;
WriteIniFile(WsInteger,'DB','DBTYPE',SysConfig.DBTYPE);
WriteIniFile(WsString,'DB','Data Source',SysConfig.DBName);
WriteIniFile(WsString,'DB','Password',SysConfig.DBPASSWORD);
WriteIniFile(WsString,'DB','User ID',SysConfig.DBACCOUNT);
WriteIniFile(WsString,'DB','Persist Security Info','True');
WriteIniFile(WsString,'DB','Server',SysConfig.ServerName);
WriteIniFile(WsInteger,'DB','TimeOut',SysConfig.DBTimeOut);
end;
procedure TForm_DBConfig.ConnectBtnClick(Sender: TObject);
begin
ConnectTest(true);
end;
procedure TForm_DBConfig.PageControl1Change(Sender: TObject);
var tmpdatetime:Tdatetime;
begin
WriteIniFile(WsInteger,'TableSheet','FrmDBConfig',PageControl1.TabIndex );
if edit_dbname.Text<>'' then
begin
edt_dbname.Text:=Edit_DBName.Text;
GetHostDateTime(DataMod.ADOCon,tmpdatetime);
Edt_backname.Text:=edt_dbname.Text+'_'+formatdatetime('yyyymmdd',tmpdatetime);
end;
end;
procedure TForm_DBConfig.E_sampinKeyPress(Sender: TObject; var Key: Char);
begin
if not (Key in ['0'..'9',chr(13),chr(8)]) then abort;
end;
procedure TForm_DBConfig.FormClose(Sender: TObject;
var Action: TCloseAction);
begin
action:=cafree;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -