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

📄 main.cpp

📁 很经典的数据库代码
💻 CPP
📖 第 1 页 / 共 2 页
字号:
//---------------------------------------------------------------------------

#include <vcl.h>
#pragma hdrstop

#include "Main.h"            //考勤工资管理系统主窗体头文件
#include "DataModule.h"      //数据模块窗体头文件
#include "WSalary_Work.h"    //考勤管理窗体头文件
#include "WSalary_Salary.h"  //工资管理窗体头文件
#include "WSalary_Set.h"     //考勤工资参数设置窗体头文件
#include "Archives_Config.h" //数据库服务器配置窗体头文件

//#include "Archives_Query.h"  //数据记录查询窗体头文件
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma link "CGAUGES"
#pragma resource "*.dfm"
TF_Main *F_Main;
//---------------------------------------------------------------------------
__fastcall TF_Main::TF_Main(TComponent* Owner)
        : TForm(Owner)
{
}
//---------------------------------------------------------------------------

bool TF_Main::CreateForm(TForm *CForm)
{   /*****用户自定义MDIChild子窗体存在判断函数*****/
    int No;
    bool FormExist = false;
    if(CForm == NULL)  //判断CForm是否为空
      return false;
    for(No=0;No<Screen->FormCount;No++){  //判断窗体是否已经被建立起来
      if(Screen->Forms[No]->ClassType() == CForm->ClassType()){  //窗体存在判断
        FormExist = true;  //窗体已经创建,用户没看到可能是处于隐藏或者最小化
        break;
      }
    }
    if(FormExist == false) //窗体没有创建,返回false
      return false;
    if(CForm->WindowState == wsMinimized)  //窗体已经创建,但处于最小化状态
      ShowWindow(CForm->Handle,SW_SHOWNORMAL);  //显示窗体
    else                                   //窗体已经创建,但处于隐藏状态
      ShowWindow(CForm->Handle,SW_SHOWNA);      //显示窗体
    if(!CForm->Visible)
      CForm->Visible = true;
    CForm->BringToFront();  //当前窗口显示在最面前
    CForm->SetFocus();      //把光标的焦点转移到刚才创建或显示的窗口上
    return true;
}
//---------------------------------------------------------------------------

void TF_Main::BackupDatabase(AnsiString filename)
{   /*****用户自定义备份SQL Server 2000数据库函数*****/
    DM->AQ_Back_Restore->Close();       //关闭数据库备份还原查询控件
    DM->AQ_Back_Restore->SQL->Clear();  //清除SQL语句
//    DM->AQ_Back_Restore->SQL->Add("USE Archives");   //增加备份数据库SQL语句
    AnsiString Backup("BACKUP DATABASE ");  //生成数据库备份命令赋Backup字符串
    TIniFile *ini;  //申请一个TIniFile类对象
    ini = new TIniFile(ExtractFilePath(ParamStr(0))+"Config.INI");    //打开考勤工资管理系统配置文件
    AnsiString  str;
    str = ini->ReadString("Database","Initial Catalog","Archives"); //从配置文件读数据库名
    Backup.Insert(str,Backup.Length()+1);  //追加考勤工资管理系统数据库名,+1的目的是前面有个空格
    DM->AQ_Back_Restore->SQL->Add(Backup); //增加备份数据库RESTORE命令SQL语句
    delete ini;      //释放ini对象
//    AnsiString str;   //生成备份数据库生成文件的路径和文件名字符串
    str="TO DISK ='";  //生成备份数据库文件的路径和文件名字符串
    str+=filename;
    str+="'";
    DM->AQ_Back_Restore->SQL->Add(str);  //增加备份数据库的路径和文件名字符串SQL语句
    DM->AQ_Back_Restore->SQL->Add("WITH init"); //备份数据库SQL语句WITH参数设定,完整备份数据库
    try{        //捕捉异常
      DM->AQ_Back_Restore->ExecSQL();     //执行SQL语句,但不打开数据集
    }
    catch(...)  //抛出异常
    {
      Application->MessageBox("数据库备份出错", "错误!", MB_OK);
    }
}
//---------------------------------------------------------------------------

void TF_Main::RestoreDatabase(AnsiString filename)
{   /*****用户自定义还原SQL Server 2000数据库函数*****/
    DM->AQ_Back_Restore->Close();       //关闭数据库备份还原查询控件
    DM->AQ_Back_Restore->SQL->Clear();  //清除SQL语句
    AnsiString Restore("RESTORE DATABASE ");  //生成数据库还原命令赋Restore字符串
    TIniFile *ini;  //申请一个TIniFile类对象
    ini = new TIniFile(ExtractFilePath(ParamStr(0))+"Config.INI"); //打开考勤工资管理系统配置文件
    AnsiString  str;
    str = ini->ReadString("Database","Initial Catalog","Archives"); //从配置文件读数据库名
    Restore.Insert(str,Restore.Length()+1);  //追加考勤工资管理系统数据库名,+1的目的是前面有个空格
    DM->AQ_Back_Restore->SQL->Add(str);     //增加还原数据库SQL命令语句
    delete ini;            //释放ini对象
    str="FROM DISK = '";   //生成还原数据库文件的路径和文件名字符串
    str+=filename;
    str+="'";
    DM->AQ_Back_Restore->SQL->Add(str); //增加还原数据库文件的路径和文件名字符串SQL语句
    DM->AQ_Back_Restore->SQL->Add("WITH norecovery"); //还原数据库SQL语句WITH参数设定,完整还原数据库
    try{        //捕捉异常
      DM->AQ_Back_Restore->ExecSQL();     //执行SQL语句,但不打开数据集
    }
    catch(...)  //抛出异常
    {
      Application->MessageBox("数据库恢复出错", "错误!", MB_OK);
    }
}
//---------------------------------------------------------------------------


void __fastcall TF_Main::FormCreate(TObject *Sender)
{   /*****主窗体创建事件*****/
    CGauge1->Parent = StatusBar1;   //将进度条CGauge1绑定到StatusBar1
    CGauge1->Top = 3;               //设置进度条在StatusBar里顶部的位置
    CGauge1->Left = StatusBar1->Panels->Items[0]->Width+2;  //设置进度条左边框位置
    CGauge1->Height = StatusBar1->Height-2;                 //设置进度条高度
    CGauge1->Width = StatusBar1->Panels->Items[1]->Width-4; //设置进度条宽度
    TIniFile *ini;  //申请一个TIniFile类对象
    //打开考勤工资管理系统Config.INI配置文件,如果不存在则创建
    ini = new TIniFile(ExtractFilePath(ParamStr(0))+"Config.INI");  //ExtractFilePath(ParamStr(0))取得当前工作路径
    F_Main->Color = ini->ReadInteger("Form","Color",clAppWorkSpace); //从配置文件中读取颜色值
    AnsiString str = ini->ReadString("Form","Picture","");           //从配置文件中读取主窗体背景图片文件
    if(!str.IsEmpty()){  //用户没有选择了图片
      try{
        Image1->Picture->LoadFromFile(str);  //更换主窗体背景图片
        }
      catch(...){
        Image1->Picture->CleanupInstance();  //清除图片
        Application->MessageBox("加载背景图时出错,没有找到图片文件", "错误!", MB_OK);
        }
      }
    delete ini; //释放ini对象
}
//---------------------------------------------------------------------------

void __fastcall TF_Main::StatusBar1DrawPanel(TStatusBar *StatusBar,
      TStatusPanel *Panel, const TRect &Rect)
{   /*****StatusBar1状态栏OnDrawPanel事件*****/
    if(Panel->ID == 2){   //只在第三个Panels上显示图标与文字
      Graphics::TBitmap *Time = new Graphics::TBitmap();  //创建一个图像对象
      ImageList1->GetBitmap(0,Time); //从图像列表ImageList1取得第1幅位图赋Time
      StatusBar1->Canvas->Draw(Rect.Left,Rect.Top,Time);  //在状态栏里显示图像
      StatusBar1->Canvas->TextOutA(Rect.Left+24,Rect.Top+1,DateToStr(Now())); //显示当前日期
      delete Time;  //释放Time对象
      }
}
//---------------------------------------------------------------------------

void __fastcall TF_Main::WindowCloseAllExecute(TObject *Sender)
{   /*****操作列表控件ActionList1中WindowCloseAll操作执行事件*****/
    int i;
    for(i=0;i<MDIChildCount;i++)  //MDIChildCount取得当前MDI子窗口的个数
      MDIChildren[i]->Close();       //关闭所有MDI子窗口
}
//---------------------------------------------------------------------------

void __fastcall TF_Main::WindowCloseAllUpdate(TObject *Sender)
{   /*****操作列表控件ActionList1中WindowCloseAll操作Update事件*****/
    if(MDIChildCount>0)  //是否有MDI子窗口创建判断
      dynamic_cast <TAction *>(Sender)->Enabled = true;  //关闭所有MDI子窗口菜单使能
    else
      dynamic_cast <TAction *>(Sender)->Enabled = false; //关闭所有MDI子窗口菜单非使能
}
//---------------------------------------------------------------------------

void __fastcall TF_Main::M_StatClick(TObject *Sender)
{   /*****考勤统计菜单项单击事件*****/
    if(CreateForm(F_Work) == false)       //CreateForm调用判断考勤管理窗体是否存在自定义函数,后面讲到
      F_Work = new TF_Work(Application);  //动态创建考勤管理窗体
    F_Work->PageControl1->ActivePage = F_Work->PageControl1->Pages[4];  //设定ActivePage为考勤统计属性页
}
//---------------------------------------------------------------------------

void __fastcall TF_Main::M_AttenClick(TObject *Sender)
{   /*****出勤管理菜单项单击事件*****/
    if(CreateForm(F_Work) == false)       //CreateForm调用判断考勤管理窗体是否存在函数
      F_Work = new TF_Work(Application);  //动态创建考勤管理窗体
    F_Work->PageControl1->ActivePage = F_Work->PageControl1->Pages[0];  //设定ActivePage为出勤管理属性页
}
//---------------------------------------------------------------------------

void __fastcall TF_Main::M_OTimeClick(TObject *Sender)
{   /*****加班管理菜单项单击事件*****/
    if(CreateForm(F_Work) == false)       //CreateForm调用判断考勤管理窗体是否存在函数
      F_Work = new TF_Work(Application);  //动态创建考勤管理窗体
    F_Work->PageControl1->ActivePage = F_Work->PageControl1->Pages[1];  //设定ActivePage为加班管理属性页
}
//---------------------------------------------------------------------------

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -