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

📄 pagevocationset.cpp

📁 人事管理系统
💻 CPP
字号:
// PageVocationSet.cpp : implementation file
//

#include "stdafx.h"
#include "PersonelManage.h"
#include "PageVocationSet.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

/////////////////////////////////////////////////////////////////////////////
// CPageVocationSet property page

IMPLEMENT_DYNCREATE(CPageVocationSet, CResizablePage)

CPageVocationSet::CPageVocationSet() : CResizablePage(CPageVocationSet::IDD)
{
	//{{AFX_DATA_INIT(CPageVocationSet)
	m_bIsND = FALSE;
	m_tVocDate = COleDateTime::GetCurrentTime();
	m_strVocName = _T("");
	m_nDays = 0;
	//}}AFX_DATA_INIT
	m_psp.dwFlags &= (~PSP_HASHELP);
	m_psp.dwFlags |= ( PSP_USEHICON );
	HICON hIconTab = AfxGetApp()->LoadIcon(IDI_PERSON);
	m_psp.hIcon = hIconTab;
}

CPageVocationSet::~CPageVocationSet()
{
}

void CPageVocationSet::DoDataExchange(CDataExchange* pDX)
{
	CResizablePage::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CPageVocationSet)
	DDX_Control(pDX, IDC_LIST_VOC, m_ctrlVocCheckList);
	DDX_Check(pDX, IDC_CHECK_ISND, m_bIsND);
	DDX_DateTimeCtrl(pDX, IDC_DATETIMEPICKER_VOCDATE, m_tVocDate);
	DDX_Text(pDX, IDC_EDIT_VOCNAME, m_strVocName);
	DDX_Text(pDX, IDC_EDIT_DAYS, m_nDays);
	//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(CPageVocationSet, CResizablePage)
	//{{AFX_MSG_MAP(CPageVocationSet)
	ON_BN_CLICKED(IDC_BUTTON_ADDVOCATION, OnButtonAddvocation)
	ON_BN_CLICKED(IDC_BUTTON_DELVOCATION, OnButtonDelvocation)
	ON_BN_CLICKED(IDC_BUTTON_OK, OnButtonOk)
	ON_BN_CLICKED(IDC_BUTTON_CANCEL, OnButtonCancel)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CPageVocationSet message handlers

BOOL CPageVocationSet::OnInitDialog() 
{
	CResizablePage::OnInitDialog();
	
	// TODO: Add extra initialization here
	AddAnchor(IDC_STATIC_GRP, TOP_LEFT, BOTTOM_RIGHT);
	AddAnchor(IDC_LIST_VOC, TOP_LEFT, BOTTOM_RIGHT);
	AddAnchor(IDC_DATETIMEPICKER_VOCDATE, BOTTOM_RIGHT);

	AddAnchor(IDC_STATIC_VOCNAME, BOTTOM_RIGHT);
	AddAnchor(IDC_EDIT_VOCNAME, BOTTOM_RIGHT);
	AddAnchor(IDC_CHECK_ISND, BOTTOM_RIGHT);
	AddAnchor(IDC_BUTTON_ADDVOCATION, BOTTOM_RIGHT);
	AddAnchor(IDC_BUTTON_DELVOCATION, BOTTOM_RIGHT);

	AddAnchor(IDC_STATIC_DAYS, BOTTOM_RIGHT);
	AddAnchor(IDC_EDIT_DAYS, BOTTOM_RIGHT);
	AddAnchor(IDC_SPIN_DAYS, BOTTOM_RIGHT);
	AddAnchor(IDC_BUTTON_OK, BOTTOM_RIGHT);
	AddAnchor(IDC_BUTTON_CANCEL, BOTTOM_RIGHT);
	

	m_ctrlVocCheckList.ResetContent();
	//m_ctrlVocCheckList.SetCheckStyle(BS_AUTO3STATE);
	m_ctrlVocCheckList.SetCheckStyle( BS_3STATE );
	FillCheckList();
	m_nOldCount = m_nNewCount = m_ctrlVocCheckList.GetCount();
	
	
	return TRUE;  // return TRUE unless you set the focus to a control
	              // EXCEPTION: OCX Property Pages should return FALSE
}

void CPageVocationSet::OnButtonAddvocation() 
{
	// TODO: Add your control notification handler code here
	UpdateData(TRUE);
	if(m_strVocName.GetLength() == 0)
	{
		AfxMessageBox("请输入假期名!");
		return;
	}
	Vocation added;
	added.date = m_tVocDate;
	added.isND = m_bIsND;
	added.name = m_strVocName;
	vocList.Add(added);

	m_nNewCount++;
	m_ctrlVocCheckList.AddString(m_strVocName);
	m_ctrlVocCheckList.SetCheck(m_nNewCount - 1, m_bIsND);
	
}

void CPageVocationSet::OnButtonDelvocation() 
{
	// TODO: Add your control notification handler code here
	int nSel = m_ctrlVocCheckList.GetCurSel();
	if(nSel == -1)
		return;
	if(nSel <= m_nOldCount - 1)
	{
		Vocation del;
		del.id = m_ctrlVocCheckList.GetItemData(nSel);
		m_ctrlVocCheckList.GetText(nSel, del.name);
		del.isND = m_ctrlVocCheckList.GetCheck(nSel);

		delList.Add(del);

		m_nOldCount--;
		m_nNewCount--;
		m_ctrlVocCheckList.DeleteString(nSel);
	}
	else
	{
		vocList.RemoveAt(nSel - m_nOldCount);
		m_nNewCount--;
		m_ctrlVocCheckList.DeleteString(nSel);
	}
	
}

void CPageVocationSet::FillCheckList()
{
	CString strQuery = _T("SELECT [HolidayID],[HolidayName],[IsNationalHoliday] FROM [tblHoliday]");
	long nHolidayID;
	CString strHolidayName;
	bool bIsNationalHoliday;

	CADODatabase *pDb = new CADODatabase;
	try
	{
		if(pDb->Open())
		{
			CADORecordset *pRs = new CADORecordset(pDb);
			if(pRs->Open(strQuery, CADORecordset::openQuery))
			{
				m_ctrlVocCheckList.ResetContent();

				int cur = 0;
				while(!pRs->IsEOF())
				{
					pRs->GetFieldValue("HolidayID", nHolidayID);
					pRs->GetFieldValue("HolidayName", strHolidayName);
					pRs->GetFieldValue("IsNationalHoliday", bIsNationalHoliday);
					m_ctrlVocCheckList.AddString(strHolidayName);
					m_ctrlVocCheckList.SetCheck(cur, bIsNationalHoliday);
					m_ctrlVocCheckList.SetItemData(cur, nHolidayID);
					
					cur++;
					pRs->MoveNext();
				}
				pRs->Close();
			}
			delete pRs;
			pDb->Close();
		}
		delete pDb;
	}
	catch(CADOException)
	{
	}	
}

void CPageVocationSet::OnButtonOk() 
{
	// TODO: Add your control notification handler code here
	CString strCmdText = _T("");
	Vocation voc;
	int i, j;

	CString strConnection = _T("Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=BlueHill;Data Source=dragonflylong\\sqlexpress");
	CADODatabase *pDb = new CADODatabase;
	pDb->SetConnectionString(strConnection);

	try
	{
		if(pDb->Open())
		{
			CADOCommand pCmd(pDb);
			for(i = 0, j = delList.GetSize(); i < j; i++)
			{
				voc = delList.GetAt(i);
				strCmdText.Format("DELETE FROM [tblHoliday] WHERE HolidayID = %d", voc.id);
				pCmd.SetText(strCmdText);
				pCmd.SetType(CADOCommand::typeCmdText);
				if(!pCmd.Execute(CADOCommand::typeCmdText))
				{
					AfxMessageBox("删除数据失败!");
					return;
				}
			}
			delList.RemoveAll();
			////////////////////////////////////////
			//下面添加数据
			if(vocList.GetSize() == 0)
				return;
			CADORecordset *pRs = new CADORecordset(pDb);
			if(pRs->Open("tblHoliday", CADORecordset::openTable))
			{
				bool isNationalDay;
				for(i = 0, j = vocList.GetSize(); i < j; i++)
				{
					voc = vocList.GetAt(i);
					pRs->AddNew();
					pRs->SetFieldValue("HolidayDate", voc.date);
					pRs->SetFieldValue("HolidayName", voc.name);
					isNationalDay = (bool)voc.isND;
					pRs->SetFieldValue("IsNationalHoliday", isNationalDay);

					pRs->Update();
				}
				//重新设置数据
				FillCheckList();
				vocList.RemoveAll();
				m_nOldCount = m_nNewCount;
				pRs->Close();
			}
			delete pRs;
			pDb->Close();
		}
		delete pDb;
		AfxMessageBox("执行操作成功!!");
	}
	catch(CADOException)
	{
	}	
	
}

void CPageVocationSet::OnButtonCancel() 
{
	// TODO: Add your control notification handler code here
	int i, j;
	for(i = 0, j = delList.GetSize(); i < j; i++)
	{
		Vocation voc;
		voc = delList.GetAt(i);
		m_ctrlVocCheckList.InsertString(m_nOldCount, voc.name);
		m_ctrlVocCheckList.SetCheck(m_nOldCount, voc.isND);
		m_ctrlVocCheckList.SetItemData(m_nOldCount, voc.id);
		m_nOldCount++;
		m_nNewCount++;
	}
	
	delList.RemoveAll();
	for(i = m_nNewCount - 1, j = m_nOldCount; i >= j; i--)
	{
		m_ctrlVocCheckList.DeleteString(i);
		m_nNewCount--;
	}
	vocList.RemoveAll();
}

⌨️ 快捷键说明

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