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

📄 datamodule.~cpp

📁 很经典的数据库代码
💻 ~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 + -