employeeedit.cpp

来自「是我编写的一个考勤机管理系统,用于计算某员工某段时间以来的迟到与早退等情况.」· C++ 代码 · 共 292 行

CPP
292
字号
//---------------------------------------------------------------------------

#include <vcl.h>
#pragma hdrstop
#include "EmployeeEdit.h"
#include "DM.h"
#include "Public.h"
#include "Employee.h"

//---------------------------------------------------------------------------

#pragma package(smart_init)
#pragma resource "*.dfm"
TfrmEmployeeEdit *frmEmployeeEdit;



//---------------------------------------------------------------------------
__fastcall TfrmEmployeeEdit::TfrmEmployeeEdit(TComponent* Owner)
    : TForm(Owner)
{
}
//---------------------------------------------------------------------------


void __fastcall TfrmEmployeeEdit::LoadData(void)
{
    OpenSQL(QurFree,"select * from DefClass");
    if (QurFree->RecordCount>0)
    {
        QurFree->First();
        CmbClass->Items->Clear();
        while (!QurFree->Eof)
        {
            CDC = new cDefClass;
            CDC->iID = QurFree->FieldByName("DefClassID")->AsInteger ;
            CDC->sName = QurFree->FieldByName("DefClassName")->AsString ;

            CmbClass->Items->AddObject(CDC->sName,CDC);
            QurFree->Next();
        }
    }
    OpenSQL(QurFree,"select * from DefVac");

    if (QurFree->RecordCount>0)
    {
        QurFree->First();
        CmbVac->Items->Clear();
        while (!QurFree->Eof)
        {
            CDV = new cDefVac;
            CDV->iID = QurFree->FieldByName("DefVacID")->AsInteger ;
            CDV->sName = QurFree->FieldByName("DefVacName")->AsString ;

            CmbVac->Items->AddObject(CDV->sName,CDV);;
            QurFree->Next();
        }
    }

}

void __fastcall TfrmEmployeeEdit::BtnState(int State)
{
    switch (State)
    {

      case 1 : //新增
        EdtCode->Enabled=true;
        EdtName->Enabled=true;
        EdtCard->Enabled=true;
        CmbClass->Enabled=true;
        CmbVac->Enabled=true;
        break;

      case 2 : //查看

        EdtCode->Enabled=false;
        EdtName->Enabled=false;
        EdtCard->Enabled=false;
        CmbClass->Enabled=false;
        CmbVac->Enabled=false;
        break;

      case 3 : //修改
        EdtCode->Enabled=true;
        EdtName->Enabled=true;
        EdtCard->Enabled=true;
        CmbClass->Enabled=true;
        CmbVac->Enabled=true;
        break;
    }
}

void __fastcall TfrmEmployeeEdit::AddBill(void)
{
    EdtCode->Clear();
    EdtName->Clear();
    EdtCard->Clear();
    CmbClass->Clear();
    CmbVac->Clear();
    LoadData();
    BtnState(1);
    mEdit=false;
    mChanged=false;
    mEmployeeID=0;
    EdtName->SetFocus() ;
}

void __fastcall TfrmEmployeeEdit::ViewBill(int EmployeeID)
{
    LoadData();
    OpenSQL(QurFree,"select a.Code,a.Name,a.Card,b.DefClassName,c.DefVacName from (Employee a  "
        "left outer join DefClass b on a.DefClassID=b.DefClassID) "
        "Left outer join DefVac c on a.DefVacID=c.DefVacID where EmployeeID=" + IntToStr(EmployeeID));

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

    EdtCode->Text= QurFree->FieldByName("Code")->AsString;
    EdtName->Text= QurFree->FieldByName("Name")->AsString;
    EdtCard->Text= QurFree->FieldByName("Card")->AsString;

    CmbClass->ItemIndex = CmbClass->Items->IndexOf(QurFree->FieldByName("DefClassName")->AsString);
    CmbVac->ItemIndex = CmbVac->Items->IndexOf(QurFree->FieldByName("DefVacName")->AsString);

    BtnState(2);
    mEdit=true;
    mChanged=false;
    mEmployeeID= EmployeeID;
}

bool __fastcall TfrmEmployeeEdit::SaveBill(void)
{

    if (Trim(EdtCode->Text)=="")
    {
        Message("请输入员工编号!");
        return false;
    }
    if (Trim(EdtName->Text)=="")
    {
        Message("请输入员工名称!");
        return false;
    }
    if (Trim(EdtCard->Text)=="")
    {
        Message("请输入员工卡号!");
        return false;
    }
    if (Trim(CmbClass->Text)=="")
    {
        Message("请选择默认排班!");
        return false;
    }
    if (Trim(CmbVac->Text)=="")
    {
        Message("请选择默认休假!");
        return false;
    }

    if (mChanged==false) return false;

    try
    {
        if (!mEdit)
        {
            OpenSQL(QurFree,"select * from Employee where Code='" + Trim(EdtCode->Text) + "' or Card='" + Trim(EdtCard->Text) + "'");
            if (QurFree->RecordCount>0)
            {
                Message ("该员工编号或员工卡号已存在!");
                return false;
            }

            QurFree->Append();
            QurFree->FieldByName("Name")->AsString=Trim(EdtName->Text);
            QurFree->FieldByName("Code")->AsString=Trim(EdtCode->Text);
            QurFree->FieldByName("Card")->AsString=Trim(EdtCard->Text);
            QurFree->FieldByName("DefClassID")->AsInteger=
                ((cDefClass*)(CmbClass->Items->Objects[CmbClass->ItemIndex]))->iID;
            QurFree->FieldByName("DefVacID")->AsInteger=
                ((cDefVac*)(CmbVac->Items->Objects[CmbVac->ItemIndex]))->iID;
            QurFree->Post();

            /*frmDM->Con->Execute("insert into Employee(Code,Name,Card,DefClassID,DefVacID) values("
             "'" + EdtCode->Text + "',"
             "'" + EdtName->Text + "',"
             "'" + EdtCard->Text + "',"
            + IntToStr(((cDefClass*)(CmbClass->Items->Objects[CmbClass->ItemIndex]))->iID) + ","
            + IntToStr(((cDefVac*)(CmbVac->Items->Objects[CmbVac->ItemIndex]))->iID) + ")" ); */
        }
        else
        {
            OpenSQL(QurFree,"select * from Employee where EmployeeID=" + IntToStr(mEmployeeID));
            if (QurFree->RecordCount == 0)
            {
                Message("该员工记录已不存在!");
                return false;
            }

            QurFree->Edit();
            QurFree->FieldByName("Code")->AsString=EdtCode->Text;
            QurFree->FieldByName("Name")->AsString=EdtName->Text;
            QurFree->FieldByName("Card")->AsString=EdtCard->Text;

            QurFree->FieldByName("DefClassID")->AsInteger=
                ((cDefClass*)(CmbClass->Items->Objects[CmbClass->ItemIndex]))->iID;

            QurFree->FieldByName("DefVacID")->AsInteger=
                ((cDefVac*)(CmbVac->Items->Objects[CmbVac->ItemIndex]))->iID;

            QurFree->Post();
            //QurFree->UpdateBatch();
         }
         BtnState(2);
         mChanged=false;
         if (frmEmployee!=NULL)
            frmEmployee->RefreshData() ;
         //ViewBill(mEmployeeID);
         return true;


    }
    catch(Exception &Err)
    {
        if (  AnsiPos("创建重复的值",Err.Message) != 0 )
            Message ("输入的员工编号或员工卡号有重复!");
        else
            Message (Err.Message);
        return false;
    }
}


void __fastcall TfrmEmployeeEdit::FormClose(TObject *Sender,
      TCloseAction &Action)
{
    frmEmployeeEdit=NULL;
    Action=caFree;
}
//---------------------------------------------------------------------------


void __fastcall TfrmEmployeeEdit::BtnPriorClick(TObject *Sender)
{
    frmDM->QurEmployee->Prior() ;
    ViewBill(frmDM->QurEmployee->FieldByName("EmployeeID")->AsInteger);
}
//---------------------------------------------------------------------------

void __fastcall TfrmEmployeeEdit::BtnNextClick(TObject *Sender)
{
    frmDM->QurEmployee->Next();
    ViewBill(frmDM->QurEmployee->FieldByName("EmployeeID")->AsInteger);
}
//---------------------------------------------------------------------------

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

void __fastcall TfrmEmployeeEdit::BtnEditClick(TObject *Sender)
{
    BtnState(3);     
}
//---------------------------------------------------------------------------

void __fastcall TfrmEmployeeEdit::BtnSaveClick(TObject *Sender)
{
    SaveBill() ;    
}
//---------------------------------------------------------------------------

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



void __fastcall TfrmEmployeeEdit::EdtNameChange(TObject *Sender)
{
    mChanged=true;
}
//---------------------------------------------------------------------------

⌨️ 快捷键说明

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