📄 pagevocationset.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 + -