📄 pball.cpp
字号:
}
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 + -