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

📄 setclassedit.cpp

📁 是我编写的一个考勤机管理系统,用于计算某员工某段时间以来的迟到与早退等情况.
💻 CPP
字号:
//---------------------------------------------------------------------------

#include <vcl.h>
#pragma hdrstop

#include "SetClassEdit.h"
#include "Public.h"
#include "DM.h"
#include "SetClass.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma link "Register"
#pragma resource "*.dfm"
TfrmSetClassEdit *frmSetClassEdit;
//---------------------------------------------------------------------------
__fastcall TfrmSetClassEdit::TfrmSetClassEdit(TComponent* Owner)
    : TfrmRegister(Owner)
{
}
//---------------------------------------------------------------------------

void __fastcall TfrmSetClassEdit::LoadData(void)
{
    CmbEmployee->Text="";
    CmbTimeMode->Text="";
    CmbBeginTime->Text="";
    CmbEndTime->Text="";
    CmbTimePos->Text="";
    Memo->Clear();

    OpenSQL(QurFree,"select * from Employee");
    CmbEmployee->Items->Clear();
    if (QurFree->RecordCount>0)
    {
        QurFree->First();
        while (!QurFree->Eof)
        {
            CEmp = new cEmployee;
            CEmp->iID = QurFree->FieldByName("EmployeeID")->AsInteger ;
            CEmp->sName = QurFree->FieldByName("Name")->AsString ;

            CmbEmployee->Items->AddObject(CEmp->sName,CEmp );
            QurFree->Next();
        }
    }

    OpenSQL(QurFree,"select * from Class");
    CmbTimePos->Items->Clear();
    if (QurFree->RecordCount>0)
    {
        QurFree->First();
        while (!QurFree->Eof)
        {
            CC = new cClass;
            CC->iID = QurFree->FieldByName("ClassID")->AsInteger ;
            CC->sName = QurFree->FieldByName("ClassName")->AsString ;

            CmbTimePos->Items->AddObject(CC->sName,CC);
            QurFree->Next();
        }
    }

    CmbTimeMode->Items->Clear();
    CmbTimeMode->Items->Add("每天");
    CmbTimeMode->Items->Add("每周");
    CmbTimeMode->Items->Add("每月");

}

void __fastcall TfrmSetClassEdit::AddBill(void)
{
    LoadData();
    BtnState(1);
    mEdit=false;
    mChanged=false;
    mDataID=0;
}

void __fastcall TfrmSetClassEdit::ViewBill(int DataID)
{
    LoadData();
    OpenSQL(QurFree," select a.BeginDate,a.EndDate,a.TimeMode,a.BeginTime,a.EndTime,a.Memo1,b.Name,c.ClassName from (SetClass a "
        " left outer join Employee b on a.EmployeeID=b.EmployeeID) "
        " left outer join Class c on a.ClassID=c.ClassID where a.AddClass=0 and a.DataID= " +IntToStr(DataID));

    if(QurFree->RecordCount==0)
    {
        Message("该单据已不存在!");
        return;
    }

    CmbEmployee->Text=QurFree->FieldByName("Name")->AsString;
    DtpBeginDate->Date=QurFree->FieldByName("BeginDate")->AsDateTime;
    DtpEndDate->Date=QurFree->FieldByName("EndDate")->AsDateTime;
    CmbTimeMode->Text=QurFree->FieldByName("TimeMode")->AsString;
    CmbBeginTime->Text=QurFree->FieldByName("BeginTime")->AsString;
    CmbEndTime->Text=QurFree->FieldByName("EndTime")->AsString;
    CmbTimePos->Text=QurFree->FieldByName("ClassName")->AsString;
    Memo ->Text=QurFree->FieldByName("Memo1")->AsString;

    BtnState(2);

    
    mEdit=true;
    mChanged=false;
    mDataID=DataID;
}

bool __fastcall TfrmSetClassEdit::SaveBill(void)
{
    if (Trim(CmbEmployee->Text) == "")
    {
        Message ("请选择员工!");
        return false;
    }
    if (DtpBeginDate->Date > DtpEndDate->Date)
    {
        Message ("结束日期不能比开始日期早!");
        return false;
    }
    if (Trim(CmbTimeMode->Text) == "")
    {
        Message ("请选择时间模式!");
        return false;
    }
    if (Trim(CmbTimeMode->Text) != "每天")
    {
        if (Trim(CmbBeginTime->Text) == "")
        {
            Message ("请选择开始时间!");
            return false;
        }
        if (Trim(CmbEndTime->Text) == "")
        {
            Message ("请选择结束时间!");
            return false;
        }
        if (StrToInt(CmbBeginTime->Text) > StrToInt(CmbEndTime->Text))
        {
            Message ("结束时间不能比开始时间早!");
            return false;
        }
    }
    if (Trim(CmbTimePos->Text) == "")
    {
        Message ("请选择班次!");
        return false;
    }

    if (!mChanged) return false;
    AnsiString SQL;
    if(!mEdit)
    {

        SQL = "insert into SetClass(EmployeeID,BeginDate,EndDate,TimeMode,"
             "BeginTime,EndTime,ClassID,Memo1,AddClass) Values( "
             + IntToStr(((cEmployee*)(CmbEmployee->Items->Objects[CmbEmployee->ItemIndex]))->iID) + ","
             "'" + DtpBeginDate->Date + "',"
             "'" + DtpEndDate->Date + "',"
             "'" + CmbTimeMode->Text + "',"
             "'" + CmbBeginTime->Text + "',"
             "'" + CmbEndTime->Text + "',"
             + IntToStr(((cClass*)(CmbTimePos->Items->Objects[CmbTimePos->ItemIndex]))->iID) + ","
             "'" + Memo->Text + "',"
             + IntToStr(0) + ")" ;

      //  Message (SQL);
        frmDM->Con->Execute(SQL);
    }
    else
    {
        OpenSQL(QurFree,"select * from SetClass where DataID="+IntToStr(mDataID));
        if (QurFree->RecordCount==0)
        {
            Message("该单据已不存在!");
            return false;
        }
        QurFree->Edit();
        QurFree->FieldByName("EmployeeID")->AsInteger=
            ((cEmployee*)(CmbEmployee->Items->Objects[CmbEmployee->Items->IndexOf(CmbEmployee->Text)]))->iID;

        QurFree->FieldByName("BeginDate")->AsDateTime=DtpBeginDate->Date;
        QurFree->FieldByName("EndDate")->AsDateTime=DtpEndDate->Date;
        QurFree->FieldByName("TimeMode")->AsString=CmbTimeMode->Text;
        QurFree->FieldByName("BeginTime")->AsString=CmbBeginTime->Text;
        QurFree->FieldByName("EndTime")->AsString=CmbEndTime->Text;

        QurFree->FieldByName("ClassID")->AsInteger=
            ((cClass*)(CmbTimePos->Items->Objects[CmbTimePos->Items->IndexOf(CmbTimePos->Text)]))->iID;
        QurFree->FieldByName("Memo1")->AsString=Memo->Text;
        QurFree->FieldByName("AddClass")->AsBoolean=false;
        QurFree->Post();

    }
    BtnState(2);
    mChanged=false;
    mEdit=true;
    if (frmSetClass!=NULL)
       frmSetClass->RefreshData() ;
    return true;
}

void __fastcall TfrmSetClassEdit::BtnPriorClick(TObject *Sender)
{
    frmDM->QurSetClass->Prior() ;
    ViewBill(frmDM->QurSetClass->FieldByName("DataID")->AsInteger);
}
//---------------------------------------------------------------------------

void __fastcall TfrmSetClassEdit::BtnNextClick(TObject *Sender)
{
    frmDM->QurSetClass->Next() ;
    ViewBill(frmDM->QurSetClass->FieldByName("DataID")->AsInteger);
}
//---------------------------------------------------------------------------

void __fastcall TfrmSetClassEdit::BtnAddClick(TObject *Sender)
{
    AddBill();
}
//---------------------------------------------------------------------------

void __fastcall TfrmSetClassEdit::BtnEditClick(TObject *Sender)
{
    BtnState(3);
    AddTimeMode();    
}
//---------------------------------------------------------------------------
void __fastcall TfrmSetClassEdit::BtnSaveClick(TObject *Sender)
{
    SaveBill();
}

void __fastcall TfrmSetClassEdit::BtnExitClick(TObject *Sender)
{
    Close();
}
//---------------------------------------------------------------------------

void __fastcall TfrmSetClassEdit::CmbEmployeeChange(TObject *Sender)
{
    mChanged=true;
}
//---------------------------------------------------------------------------
void __fastcall TfrmSetClassEdit::FormClose(TObject *Sender,
      TCloseAction &Action)
{
    frmSetClassEdit=NULL;
    Action=caFree;
}

void __fastcall TfrmSetClassEdit::DtpBeginDateKeyPress(TObject *Sender,
      char &Key)
{
    Key=0;
}
//---------------------------------------------------------------------------

⌨️ 快捷键说明

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