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

📄 setvacedit.cpp

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

#include <vcl.h>
#pragma hdrstop

#include "SetVacEdit.h"
#include "SetVac.h"
#include "Public.h"
#include "DM.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma link "Register"
#pragma resource "*.dfm"
TfrmSetVacEdit *frmSetVacEdit;

//---------------------------------------------------------------------------
__fastcall TfrmSetVacEdit::TfrmSetVacEdit(TComponent* Owner)
    : TfrmRegister(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TfrmSetVacEdit::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();
        }
    }

    int iTimePosCount;
    iTimePosCount = GetTimePosCount();


    CmbTimePos->Items->Clear();
    for(int i=1;i<=iTimePosCount;i++)
    {
        CmbTimePos->Items->Add("时间段"+IntToStr(i));
    }
    CmbTimePos->Items->Add("全天");

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

}

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

void __fastcall TfrmSetVacEdit::ViewBill(int DataID)
{
    LoadData();
    
    OpenSQL(QurFree," select b.Name,a.DataID,a.BeginDate,EndDate,TimeMode,BeginTime,EndTime,TimePos,Memo1 from SetVac a "
        " left outer join Employee b on a.EmployeeID=b.EmployeeID where 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("TimePos")->AsString;
    Memo ->Text=QurFree->FieldByName("Memo1")->AsString;

    BtnState(2);

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

bool __fastcall TfrmSetVacEdit::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 SetVac(EmployeeID,BeginDate,EndDate,TimeMode,"
             "BeginTime,EndTime,TimePos,Memo1) Values( "
             + IntToStr(((cEmployee*)(CmbEmployee->Items->Objects[CmbEmployee->ItemIndex]))->iID) + ","
             "'" + DtpBeginDate->Date + "',"
             "'" + DtpEndDate->Date + "',"
             "'" + CmbTimeMode->Text + "',"
             "'" + CmbBeginTime->Text + "',"
             "'" + CmbEndTime->Text + "',"
             "'" + CmbTimePos->Text + "',"
             "'" + Memo->Text + "')" ;

        //Message (SQL);
        frmDM->Con->Execute(SQL);
    }
    else
    {
        OpenSQL(QurFree,"select * from SetVac 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("TimePos")->AsString=CmbTimePos->Text;
        QurFree->FieldByName("Memo1")->AsString=Memo->Text;
        QurFree->Post();

    }
    BtnState(2);
    mChanged=false;
    mEdit=true;
    if (frmSetVac!=NULL)
       frmSetVac->RefreshData() ;
    return true;
}
void __fastcall TfrmSetVacEdit::BtnPriorClick(TObject *Sender)
{
    frmDM->QurSetVac->Prior() ;
    ViewBill(frmDM->QurSetVac->FieldByName("DataID")->AsInteger);
}
//---------------------------------------------------------------------------
void __fastcall TfrmSetVacEdit::BtnNextClick(TObject *Sender)
{
    frmDM->QurSetVac->Next() ;
    ViewBill(frmDM->QurSetVac->FieldByName("DataID")->AsInteger);
}
//---------------------------------------------------------------------------
void __fastcall TfrmSetVacEdit::BtnAddClick(TObject *Sender)
{
    AddBill();       
}
//---------------------------------------------------------------------------
void __fastcall TfrmSetVacEdit::BtnEditClick(TObject *Sender)
{
    BtnState(3);

}
//---------------------------------------------------------------------------
void __fastcall TfrmSetVacEdit::BtnSaveClick(TObject *Sender)
{
    SaveBill();    
}
//---------------------------------------------------------------------------
void __fastcall TfrmSetVacEdit::BtnExitClick(TObject *Sender)
{
    Close();    
}
//---------------------------------------------------------------------------
void __fastcall TfrmSetVacEdit::FormClose(TObject *Sender,
      TCloseAction &Action)
{
    frmSetVacEdit=NULL;
    Action=caFree;
}
//---------------------------------------------------------------------------
void __fastcall TfrmSetVacEdit::CmbEmployeeChange(TObject *Sender)
{
    mChanged=true;
}
//---------------------------------------------------------------------------
void __fastcall TfrmSetVacEdit::DtpBeginDateKeyPress(TObject *Sender,
      char &Key)
{
    Key=0;    
}
//---------------------------------------------------------------------------


⌨️ 快捷键说明

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