?? datamodule.~cpp
字號:
//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
#include "DataModule.h" //數據模塊窗體頭文件
#include "Archives_Config.h" //數據庫服務器配置窗體頭文件
#include "Main.h" //考勤工資管理系統主窗體頭文件
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TDM *DM;
//---------------------------------------------------------------------------
__fastcall TDM::TDM(TComponent* Owner)
: TDataModule(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TDM::DataModuleCreate(TObject *Sender)
{ /*****數據模塊窗體創建事件*****/
TIniFile *ini; //申請一個TIniFile類對象
//打開INI文件,如果不存在則創建與應用程序同名,后綴名為.INI的ini配置文件
ini = new TIniFile(ExtractFilePath(ParamStr(0))+"Config.INI");
bool State;
State = ini->ReadBool("Database","Connection",false); //讀取數據庫連接是否成功標志,第一次讀或者此項不存在時則返回默認值false賦State變量
if(!State){ //數據庫沒有連接成功
try{
F_Config = new TF_Config(Application); //動態創建數據庫服務器配置窗體
F_Config->ShowModal(); //顯示數據庫服務器配置窗口
delete F_Config; //釋放F_Config對象
F_Config = NULL; //編程技巧,以免重復釋放時拋出異常
}
catch(Exception &exception){
delete F_Config; //釋放F_Config對象
Application->ShowException(&exception); //彈出異常對話框
}
// F_Config->ShowModal(); //彈出數據庫服務器配置窗口
}
char CString[100];
StrCopy(CString,"Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=False;Initial Catalog="); //拷貝字符串到CString
AnsiString str,str1;
str = ini->ReadString("Database","Initial Catalog","WSalary"); //從配置文件讀數據庫名
StrCat(CString,str.c_str()); //追加從配置文件讀入的數據庫名字符串
str1 = ini->ReadString("Database","Data Source","FLYYCS\\YCS"); //從配置文件讀數據庫服務器名
delete ini; //釋放ini對象
StrCat(CString,";Data Source="); //追加字符串到CString
StrCat(CString,str1.c_str()); //追加從配置文件讀入的數據庫服務器名字符串
DM->ADOConnection->Connected = false;
DM->ADOConnection->ConnectionString = CString; //數據庫連接屬性字符串賦新值
try{ //捕捉異常
DM->ADOConnection->Connected = true; //啟動與數據庫服務器的連接
DM->AQ_Atten->Active = true; //激活各個數據表與服務器的連接
DM->AQ_OTime->Active = true;
DM->AQ_Evec->Active = true;
DM->AQ_Leave->Active = true;
DM->AQ_Stat->Active = true;
DM->AQ_Salary->Active = true;
DM->AQ_SOther->Active = true;
DM->AQ_Employee->Active = true;
DM->AT_Employee->Active = true;
DM->AT_Type->Active = true;
DM->AT_Count->Active = true;
DM->AQ_WSet->Active = true;
}
catch(...){ //拋出異常
MessageBox(NULL,"與數據庫服務器連接未成功,請重新配置,或者使用公文包模式","警告對話框",MB_ICONWARNING);
F_Main->StatusBar1->Panels->Items[3]->Text = "數據庫連接未成功,請使用公文包模式工作"; //給第三個狀態欄賦值
}
if(DM->ADOConnection->Connected) //數據庫連接成功
F_Main->StatusBar1->Panels->Items[3]->Text = "數據庫連接成功"; //給第三個狀態欄賦值
TIniFile *iniW; //申請一個TIniFile類對象
//打開INI文件,如果不存在則創建與應用程序同名,后綴名為.INI的ini配置文件
iniW = new TIniFile(ExtractFilePath(ParamStr(0))+"Config.INI");
State = DM->ADOConnection->Connected; //取得數據庫連接是否成功標志值
iniW->WriteBool("Database","Connection",State); //將數據庫連接是否成功標志值寫入配置文件
delete iniW; //釋放iniW對象
iniW = NULL; //編程技巧,這樣可以在下次不小心再delete ini一次時也不會拋出異常
}
//---------------------------------------------------------------------------
void __fastcall TDM::AQ_EvecCalcFields(TDataSet *DataSet)
{ /*****出差信息表出差時間時間字段OnCalcFields事件*****/
AQ_EvecEvection_Time->Value = Ceil(AQ_EvecEvection_TEnd->Value.operator -(AQ_EvecEvection_TStart->Value).Val); //自動計算出差時間,以天計算
}
//---------------------------------------------------------------------------
void __fastcall TDM::AQ_LeaveCalcFields(TDataSet *DataSet)
{ /*****請假信息表出差時間時間字段OnCalcFields事件*****/
AQ_LeaveLeave_Time->Value = Ceil(AQ_LeaveLeave_DEnd->Value.operator -(AQ_LeaveLeave_DStart->Value).Val); //自動計算請假時間
}
//---------------------------------------------------------------------------
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -