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

📄 pball.cpp

📁 企业员工考勤和工资管理系统
💻 CPP
📖 第 1 页 / 共 2 页
字号:

    }
  else
    {

      for (int i = 1;i <StringGrid1->RowCount;i++)
        {
          if (StringGrid1->Cells[1][i] == "")
            {
             ShowMessage("班次不能为空!");
             StringGrid1->Row = i;
             return;
            }
        }
    }
    TFormWait * FormWait = new TFormWait(this);
    FormWait->Show();
    FormWait->Caption = "正在生成排班表,请稍候。。。";
    FormWait->ProgressBar1->Max = nTs * nYs;

    while (!(pYg->Eof))
      {
        nRow = 1;
        nYgbh = pYg->FieldByName("holderno")->AsInteger;
        sYgxm = pYg->FieldByName("holdername")->AsString;
        nKpbh = pYg->FieldByName("cardno")->AsInteger;
        nBmbh = pYg->FieldByName("departmentno")->AsInteger;
        sBmmc = pYg->FieldByName("departmentname")->AsString;
        nBzbh = pYg->FieldByName("groupno")->AsInteger;
        sBzmc = pYg->FieldByName("groupname")->AsString;
        daytemp = DateStart;
        while (daytemp <= DateEnd)
          {
            sDateTemp =  FormatDateTime("yyyy-mm-dd",daytemp);

            //查找排班是否已存在
            TLocateOptions Opts2;
            Opts2.Clear();
            //Opts << loPartialKey;
            Variant locvalues[2];
            locvalues[0] = Variant(nYgbh);
            locvalues[1] = Variant(sDateTemp);
            if(pPb->Locate("ygbh;riqi",VarArrayOf(locvalues,1), Opts2))
            goto LABEL_END;
            //-------

            if (RadioButton1->Checked)
              {
                nWeek = DayOfWeek(daytemp);
                switch (nWeek)
                  {
                    case 1 : pWbc = &wbc7; break;
                    case 2 : pWbc = &wbc1; break;
                    case 3 : pWbc = &wbc2; break;
                    case 4 : pWbc = &wbc3; break;
                    case 5 : pWbc = &wbc4; break;
                    case 6 : pWbc = &wbc5; break;
                    case 7 : pWbc = &wbc6; break;
                  }
              }
            else
              {
                 sBanci = StringGrid1->Cells[1][nRow];
                 if(!CheckBanciNo(&wbc,sBanci))
                   {
                     ShowMessage("查找基础班次失败!");
                     pAdd->CancelBatch(arAll);
                     return;
                   }
                 pWbc = &wbc;
              }
            pAdd->Append();
            pAdd->FieldByName("ygbh")->Value = nYgbh;
            pAdd->FieldByName("ygxm")->Value = sYgxm;
            if (nKpbh != 0)
            pAdd->FieldByName("kpbh")->Value = nKpbh;
            if (nBmbh != 0)
            pAdd->FieldByName("bmbh")->Value = nBmbh;
            if (sBmmc != "")
            pAdd->FieldByName("bmmc")->Value = sBmmc;
            if (nBzbh != 0)
            pAdd->FieldByName("bzbh")->Value = nBzbh;
            if (sBzmc != "")
            pAdd->FieldByName("bzmc")->Value = sBzmc;
            pAdd->FieldByName("riqi")->Value = sDateTemp;

            if (pJiari->Locate("HolidayDay", sDateTemp, Opts)) nJiari = 1;
            else nJiari = 0;
            pAdd->FieldByName("jiari")->Value = nJiari;
            if (nJiari == 1) goto LABEL_END;
            pAdd->FieldByName("banci")->Value = pWbc->bcmc;
            pAdd->FieldByName("xiuxi")->Value = pWbc->xiuxi;
            if (pWbc->xiuxi == 1) goto LABEL_END;
            pAdd->FieldByName("sds")->Value = pWbc->sds;
            sDateTemp2 = sDateTemp + " " + pWbc->sd11;
            pAdd->FieldByName("sd11")->Value =  sDateTemp2;
            pAdd->FieldByName("sd11s")->Value = pWbc->sd11s;
            pAdd->FieldByName("sd11e")->Value = pWbc->sd11e;
            if (pWbc->sd12 <= pWbc->sd11)
            sDateTemp2 = FormatDateTime("yyyy-mm-dd",daytemp + 1) + " " + pWbc->sd12;
            else sDateTemp2 = sDateTemp + " " + pWbc->sd12;
            pAdd->FieldByName("sd12")->Value = sDateTemp2;
            pAdd->FieldByName("sd12s")->Value = pWbc->sd12s;
            pAdd->FieldByName("sd12e")->Value = pWbc->sd12e;
            if (pWbc->sds > 1)
              {
                sDateTemp2 = sDateTemp + " " + pWbc->sd21;
                pAdd->FieldByName("sd21")->Value =  sDateTemp2;
                pAdd->FieldByName("sd21s")->Value = pWbc->sd21s;
                pAdd->FieldByName("sd21e")->Value = pWbc->sd21e;
                if (pWbc->sd22 <= pWbc->sd21)
                sDateTemp2 = FormatDateTime("yyyy-mm-dd",daytemp + 1) + " " + pWbc->sd22;
                else sDateTemp2 = sDateTemp + " " + pWbc->sd22;
                pAdd->FieldByName("sd22")->Value = sDateTemp2;
                pAdd->FieldByName("sd22s")->Value = pWbc->sd22s;
                pAdd->FieldByName("sd22e")->Value = pWbc->sd22e;
              }
            if (pWbc->sds > 2)
              {
                sDateTemp2 = sDateTemp + " " + pWbc->sd31;
                pAdd->FieldByName("sd31")->Value =  sDateTemp2;
                pAdd->FieldByName("sd31s")->Value = pWbc->sd31s;
                pAdd->FieldByName("sd31e")->Value = pWbc->sd31e;
                if (pWbc->sd32 <= pWbc->sd31)
                sDateTemp2 = FormatDateTime("yyyy-mm-dd",daytemp + 1) + " " + pWbc->sd32;
                else sDateTemp2 = sDateTemp + " " + pWbc->sd32;
                pAdd->FieldByName("sd32")->Value = sDateTemp2;
                pAdd->FieldByName("sd32s")->Value = pWbc->sd32s;
                pAdd->FieldByName("sd32e")->Value = pWbc->sd32e;
              }
            LABEL_END:
            daytemp++;
            FormWait->ProgressBar1->Position++;
            nRow++;

          }
        pYg->Next();
      }
  pAdd->Post();
  FormWait->Close();
  delete FormWait;
  if (pAdd->RecordCount > 0)
    {
      BitBtnUpdate->Enabled = true;
      BitBtnSave->Enabled = false;
      ShowMessage("生成排班表成功,请按‘保存’按钮保存排班表!");
    }
  //Close();
}

//-------------------------------------------------------------------
bool pascal TFormPbAll::CheckBanciNo(WBC *pWbc,AnsiString sBcmc)
{
     TLocateOptions Opts;
     Opts.Clear();
     bool bFlag;
     bFlag = pBc->Locate("bcmc", sBcmc, Opts);
     if (bFlag)
           {
             pWbc->bcmc = sBcmc;
             pWbc->xiuxi = pBc->FieldByName("xiuxi")->AsBoolean;
             pWbc->sds = pBc->FieldByName("sds")->AsInteger;
             pWbc->sd11 = pBc->FieldByName("sd11")->AsString;
             pWbc->sd11s = pBc->FieldByName("sd11s")->AsInteger;
             pWbc->sd11e = pBc->FieldByName("sd11e")->AsInteger;
             pWbc->sd12 = pBc->FieldByName("sd12")->AsString;
             pWbc->sd12s = pBc->FieldByName("sd12s")->AsInteger;
             pWbc->sd12e = pBc->FieldByName("sd12e")->AsInteger;
             pWbc->sd21 = pBc->FieldByName("sd21")->AsString;
             pWbc->sd21s = pBc->FieldByName("sd21s")->AsInteger;
             pWbc->sd21e = pBc->FieldByName("sd21e")->AsInteger;
             pWbc->sd22 = pBc->FieldByName("sd22")->AsString;
             pWbc->sd22s = pBc->FieldByName("sd22s")->AsInteger;
             pWbc->sd22e = pBc->FieldByName("sd22e")->AsInteger;
             pWbc->sd31 = pBc->FieldByName("sd31")->AsString;
             pWbc->sd31s = pBc->FieldByName("sd31s")->AsInteger;
             pWbc->sd31e = pBc->FieldByName("sd31e")->AsInteger;
             pWbc->sd32 = pBc->FieldByName("sd32")->AsString;
             pWbc->sd32s = pBc->FieldByName("sd32s")->AsInteger;
             pWbc->sd32e = pBc->FieldByName("sd32e")->AsInteger;

           }
    return bFlag;
}

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

void __fastcall TFormPbAll::StringGrid1DblClick(TObject *Sender)
{
  AnsiString SelectDay,sWeek;
  int nWeek;
  if (RadioButton3->Checked)
    {
      SelectDay = StringGrid1->Cells[0][StringGrid1->Row];
      nWeek = DayOfWeek(StrToDateTime(SelectDay));
      switch (nWeek)
         {
           case 1: sWeek = "  星期日";break;
           case 2: sWeek = "  星期一";break;
           case 3: sWeek = "  星期二";break;
           case 4: sWeek = "  星期三";break;
           case 5: sWeek = "  星期四";break;
           case 6: sWeek = "  星期五";break;
           case 7: sWeek = "  星期六";break;
         }
      FormSelectBC->Caption = SelectDay + sWeek;
      FormSelectBC->ShowModal();
      if (nFlag == 1)
        {
         StringGrid1->Cells[1][StringGrid1->Row] = sBcXz;
         nFlag =0;
        }
    }

}
//---------------------------------------------------------------------------

void __fastcall TFormPbAll::BitBtnQuitClick(TObject *Sender)
{
  FormPbAll->Close();
}
//---------------------------------------------------------------------------

void __fastcall TFormPbAll::BitBtnUpdateClick(TObject *Sender)
{
  pAdd->UpdateBatch(arAll);
  BitBtnUpdate->Enabled = false;
}
//---------------------------------------------------------------------------


void __fastcall TFormPbAll::FormCloseQuery(TObject *Sender, bool &CanClose)
{
  int nValue;
  if (pAdd->RecordCount > 0 && BitBtnUpdate->Enabled == true)
    {
      nValue = Application->MessageBoxA("生成的排班表还没有保存,是否保存?","询问",MB_YESNOCANCEL);
      if (nValue == IDYES)
         BitBtnUpdateClick(this);
      else if (nValue == IDCANCEL)
         CanClose = false;
    }
}
//---------------------------------------------------------------------------

void __fastcall TFormPbAll::BitBtnShowClick(TObject *Sender)
{
  TFormShowPb *FormShowPb = new TFormShowPb(this);
  FormShowPb->Caption = "排班";
  FormShowPb->ShowModal();
  delete FormShowPb;
}
//---------------------------------------------------------------------------

⌨️ 快捷键说明

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