📄 leaveedit.cpp
字号:
//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
#include <StrUtils.hpp>
#include "LeaveEdit.h"
#include "Leave.h"
#include "DM.h"
#include "Public.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma link "BaseFormEdit"
#pragma link "DBGridEh"
#pragma resource "*.dfm"
TfrmLeaveEdit *frmLeaveEdit;
//---------------------------------------------------------------------------
__fastcall TfrmLeaveEdit::TfrmLeaveEdit(TComponent* Owner)
: TfrmBaseFormEdit(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TfrmLeaveEdit::LoadData(void)
{
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();
}
}
Grid->Columns->Items[2]->PickList->Clear();
Grid->Columns->Items[2]->PickList->CommaText = "每天,每周,每月";
int iTimePosCount;
iTimePosCount = GetTimePosCount();
Grid->Columns->Items[5]->PickList->Clear();
for(int i=1;i<=iTimePosCount;i++)
{
Grid->Columns->Items[5]->PickList->Add("时间段"+IntToStr(i));
}
Grid->Columns->Items[5]->PickList->Add("全天");
}
void __fastcall TfrmLeaveEdit::AddBill(void)
{
AnsiString sNo,sSQL;
AnsiString stmp;
int itmp;
sNo="QJDJ" + FormatDateTime("yymmdd",Date()) ;
sSQL="select Max(BillNo) as sNo from LeaveInfo where BillNo like '" + sNo + "%'";
//Message(sSQL);
OpenSQL(QurFree,sSQL);
if ( QurFree->RecordCount==0 || QurFree->FieldByName("sNo")->IsNull )
{
sNo=sNo+"0001";
}
else
{
stmp=RightStr(QurFree->FieldByName("sNo")->AsString,4);
itmp=StrToInt(stmp)+1;
sNo= sNo + RightStr ("0000" + IntToStr(itmp),4);
}
EdtBillNo->Text= sNo;
OpenSQL(QurGrid,"select * from DefVac_D where DefVacID=0");
CmbEmployee->Text="";
DtpDate->Date=Date();
Memo->Clear();
BtnState(1);
mEdit=false;
mChanged=true;
mLeaveID=0;
}
void __fastcall TfrmLeaveEdit::BtnAddClick(TObject *Sender)
{
AddBill();
}
//---------------------------------------------------------------------------
void __fastcall TfrmLeaveEdit::BtnState(int State)
{
switch (State)
{
case 1 : //新增
EdtBillNo->ReadOnly=true;
CmbEmployee->Enabled =true;
DtpDate->Enabled=true;
Memo->Enabled =true;
Grid->Enabled=true;
Grid->ReadOnly =false;
Grid->PopupMenu =MnuLeaveEdit;
break;
case 2 : //查看
EdtBillNo->ReadOnly=true;
CmbEmployee->Enabled =false;
DtpDate->Enabled=false;
Memo->Enabled =false;
Grid->ReadOnly =true;
Grid->PopupMenu =NULL;
break;
case 3 : //修改
EdtBillNo->ReadOnly=true;
CmbEmployee->Enabled =true;
DtpDate->Enabled=true;
Memo->Enabled =true;
Grid->Enabled=true;
Grid->ReadOnly =false;
Grid->PopupMenu =MnuLeaveEdit;
break;
}
}
void __fastcall TfrmLeaveEdit::AddRecord(void)
{
if (Grid->ReadOnly) return;
if (QurGrid->RecNo == QurGrid->RecordCount)
{
if (!QurGrid->FieldByName("BeginDate")->IsNull && !QurGrid->FieldByName("EndDate")->IsNull
&& !QurGrid->FieldByName("TimeMode")->IsNull && !QurGrid->FieldByName("TimePos")->IsNull)
{
Grid->DataSource->DataSet->Append();
Grid->DataSource->DataSet->Post();
}
}
}
void __fastcall TfrmLeaveEdit::FormShow(TObject *Sender)
{
LoadData();
}
//---------------------------------------------------------------------------
void __fastcall TfrmLeaveEdit::FormClose(TObject *Sender,
TCloseAction &Action)
{
frmLeaveEdit=NULL;
Action=caFree;
}
//---------------------------------------------------------------------------
void __fastcall TfrmLeaveEdit::ViewBill(int LeaveID)
{
OpenSQL(QurFree,"select a.LeaveID,a.BillNo,b.Name,a.LeaveDate,a.Memo1 from LeaveInfo a "
" left outer join Employee b on a.EmployeeID=b.EmployeeID where a.LeaveID=" + IntToStr(LeaveID));
if (QurFree->RecordCount==0)
{
Message("该单据已不存在!");
return;
}
EdtBillNo->Text=QurFree->FieldByName("BillNo")->AsString;
CmbEmployee->Text = QurFree->FieldByName("Name")->AsString;
DtpDate->Date= QurFree->FieldByName("LeaveDate")->AsDateTime;
Memo->Text = QurFree->FieldByName("Memo1")->AsString;
/* OpenSQL(QurGrid,"SELECT A.BEGINDATE,A.ENDDATE,A.TIMEMODE,"
"A.BEGINTIME,A.ENDTIME,A.CLASSID,B.CLASSNAME FROM DEFCLASS_D A "
"LEFT OUTER JOIN CLASS B ON A.CLASSID=B.CLASSID WHERE A.DefCLASSID=" + IntToStr(DefClassID)); */
OpenSQL(QurGrid,"select * from LeaveInfo_D WHERE LeaveID= " + IntToStr(LeaveID));
BtnState(2);
mEdit=true;
mChanged=false;
mLeaveID= LeaveID;
}
bool __fastcall TfrmLeaveEdit::SaveBill(void)
{
if (CmbEmployee->Text =="")
{
Message("请选择员工名称!");
return false;
}
QurGrid->Edit();
QurGrid->Post();
QurGrid->First();
while (!QurGrid->Eof)
{
if (QurGrid->FieldByName("BeginDate")->IsNull && QurGrid->FieldByName("EndDate")->IsNull
&& QurGrid->FieldByName("TimeMode")->IsNull && QurGrid->FieldByName("TimePos")->IsNull)
{
QurGrid->Delete();
if (QurGrid->IsEmpty() || QurGrid->RecordCount ==0 )
{
Message("明细不能为空!");
return false;
}
continue;
}
if (QurGrid->FieldByName("BeginDate")->IsNull)
{
Grid->SelectedIndex=0;
Message("请选择开始日期!");
return false;
}
if (QurGrid->FieldByName("EndDate")->IsNull)
{
Grid->SelectedIndex=1;
Message("请选择结束日期!");
return false;
}
if (QurGrid->FieldByName("TimeMode")->IsNull)
{
Grid->SelectedIndex=2;
Message("请选择时间模式!");
return false;
}
else
{
if (QurGrid->FieldByName("TimeMode")->AsString=="每周" ||
QurGrid->FieldByName("TimeMode")->AsString=="每月" )
{
if (QurGrid->FieldByName("BeginTime")->IsNull)
{
Grid->SelectedIndex=3;
Message("请选择开始时间!");
return false;
}
if (QurGrid->FieldByName("EndTime")->IsNull)
{
Grid->SelectedIndex=4;
Message("请选择结束时间!");
return false;
}
}
}
if (QurGrid->FieldByName("TimePos")->IsNull)
{
Grid->SelectedIndex=5;
Message("请选择时间段!");
return false;
}
QurGrid->Next();
}
if(mChanged==false) return false;
AnsiString SQL;
if (!mEdit)
{
SQL="insert into leaveInfo(EmployeeID,LeaveDate,Memo1,BillNo) values("
+ IntToStr(((cEmployee*)(CmbEmployee->Items->Objects[CmbEmployee->Items->IndexOf(CmbEmployee->Text)]))->iID)
+ ",'" + DtpDate->Date + "','" + Memo->Text + "','" + EdtBillNo->Text + "')" ;
//Message(SQL);
frmDM->Con->Execute(SQL);
OpenSQL(QurFree,"select LeaveID from LeaveInfo where BillNo ='" + Trim(EdtBillNo->Text) + "'" );
if (QurFree->RecordCount == 0)
{
Message("保存失败!");
return false;
}
mLeaveID=QurFree->FieldByName("LeaveID")->AsInteger;
}
else
{
OpenSQL(QurFree,"select * from leaveInfo where LeaveID= " + IntToStr(mLeaveID));
if (QurFree->RecordCount==0 )
{
Message ("该单据已不存在!");
return false;
}
QurFree->Edit() ;
QurFree->FieldByName("BillNo")->AsString= Trim(EdtBillNo->Text);
QurFree->FieldByName("EmployeeID")->AsInteger=
((cEmployee*)(CmbEmployee->Items->Objects[CmbEmployee->Items->IndexOf(CmbEmployee->Text)]))->iID ;
QurFree->FieldByName("LeaveDate")->AsDateTime=DtpDate->Date;
QurFree->FieldByName("Memo1")->AsString=Memo->Text ;
QurFree->Post();
}
frmDM->Con->Execute("delete from LeaveInfo_D where LeaveID=" + IntToStr(mLeaveID));
if (QurGrid->RecordCount>0)
{
QurGrid->First() ;
for (int i=1;i<=QurGrid->RecordCount;i++)
{
SQL=" insert into LeaveInfo_D(LeaveID,ItemNo,BeginDate,EndDate,"
"TimeMode,BeginTime,EndTime,TimePos) Values("
+ IntToStr(mLeaveID) + "," + IntToStr(i) + ","
+ "'" + QurGrid->FieldByName("BeginDate")->AsString + "',"
+ "'" + QurGrid->FieldByName("EndDate")->AsString + "',"
+ "'" + QurGrid->FieldByName("TimeMode")->AsString + "',"
+ "'" + QurGrid->FieldByName("BeginTime")->AsString + "',"
+ "'" + QurGrid->FieldByName("EndTime")->AsString + "',"
+ "'" + QurGrid->FieldByName("TimePos")->AsString + "')";
//Message(SQL);
frmDM->Con->Execute(SQL);
QurGrid->Next() ;
}
}
ViewBill(mLeaveID);
if (frmLeave!=NULL)
frmLeave->RefreshData() ;
return true;
}
void __fastcall TfrmLeaveEdit::BtnPriorClick(TObject *Sender)
{
frmDM->QurLeave->Prior() ;
ViewBill(frmDM->QurLeave->FieldByName("LeaveID")->AsInteger);
}
//---------------------------------------------------------------------------
void __fastcall TfrmLeaveEdit::BtnNextClick(TObject *Sender)
{
frmDM->QurLeave->Next() ;
ViewBill(frmDM->QurLeave->FieldByName("LeaveID")->AsInteger);
}
//---------------------------------------------------------------------------
void __fastcall TfrmLeaveEdit::BtnEditClick(TObject *Sender)
{
BtnState(3);
}
//---------------------------------------------------------------------------
void __fastcall TfrmLeaveEdit::BtnSaveClick(TObject *Sender)
{
SaveBill();
}
//---------------------------------------------------------------------------
void __fastcall TfrmLeaveEdit::BtnExitClick(TObject *Sender)
{
Close();
}
//---------------------------------------------------------------------------
void __fastcall TfrmLeaveEdit::GridColumns2UpdateData(TObject *Sender,
AnsiString &Text, Variant &Value, bool &UseText, bool &Handled)
{
if (Text == "每天")
{
Grid->Columns->Items[3]->PickList->Clear();
Grid->Columns->Items[3]->Field->AsString ="";
Grid->Columns->Items[4]->PickList->Clear();
Grid->Columns->Items[4]->Field->AsString ="";
}
if (Text == "每周")
{
Grid->Columns->Items[3]->PickList->Clear();
Grid->Columns->Items[3]->Field->AsString ="1";
Grid->Columns->Items[4]->PickList->Clear();
Grid->Columns->Items[4]->Field->AsString ="1";
}
if (Text == "每月")
{
Grid->Columns->Items[3]->PickList->Clear();
Grid->Columns->Items[3]->Field->AsString ="1";
Grid->Columns->Items[4]->PickList->Clear();
Grid->Columns->Items[4]->Field->AsString ="1";
}
mChanged=true;
AddRecord();
}
//---------------------------------------------------------------------------
void __fastcall TfrmLeaveEdit::GridCellClick(TColumnEh *Column)
{
Grid->DataSource->DataSet->Edit();
switch (Grid->SelectedIndex)
{
case 3:
case 4:
if (Grid->Columns->Items[2]->Field->AsString == "每天")
{
Grid->Columns->Items[3]->PickList->Clear();
Grid->Columns->Items[3]->Field->AsString ="";
Grid->Columns->Items[4]->PickList->Clear();
Grid->Columns->Items[4]->Field->AsString ="";
}
if (Grid->Columns->Items[2]->Field->AsString == "每周")
{
Grid->Columns->Items[3]->PickList->Clear();
Grid->Columns->Items[3]->PickList->CommaText ="1,2,3,4,5,6,7";
Grid->Columns->Items[4]->PickList->Clear();
Grid->Columns->Items[4]->PickList->CommaText ="1,2,3,4,5,6,7";
}
if (Grid->Columns->Items[2]->Field->AsString == "每月")
{
Grid->Columns->Items[3]->PickList->Clear();
Grid->Columns->Items[4]->PickList->Clear();
for (int i=1; i<=31 ;i++)
{
Grid->Columns->Items[3]->PickList->Add(IntToStr(i));
Grid->Columns->Items[4]->PickList->Add(IntToStr(i));
}
}
break;
}
Grid->DataSource->DataSet->Post();
AddRecord();
}
//---------------------------------------------------------------------------
void __fastcall TfrmLeaveEdit::GridKeyPress(TObject *Sender, char &Key)
{
Key=0;
}
//---------------------------------------------------------------------------
void __fastcall TfrmLeaveEdit::GridColumns0NotInList(TObject *Sender,
AnsiString NewText, bool &RecheckInList)
{
Grid->Columns->Items[Grid->SelectedIndex]->Field->AsString =
Grid->Columns->Items[Grid->SelectedIndex]->Field->AsString ;
}
//---------------------------------------------------------------------------
void __fastcall TfrmLeaveEdit::GridColumns0UpdateData(TObject *Sender,
AnsiString &Text, Variant &Value, bool &UseText, bool &Handled)
{
AddRecord();
mChanged=true;
}
//---------------------------------------------------------------------------
void __fastcall TfrmLeaveEdit::N1Click(TObject *Sender)
{
Grid->DataSource->DataSet->Append();
Grid->DataSource->DataSet->Post();
}
//---------------------------------------------------------------------------
void __fastcall TfrmLeaveEdit::N2Click(TObject *Sender)
{
QurGrid->Delete() ;
}
//---------------------------------------------------------------------------
void __fastcall TfrmLeaveEdit::CmbEmployeeChange(TObject *Sender)
{
mChanged=true;
}
//---------------------------------------------------------------------------
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -