4.6.4 考勤的统计、查询与删除(1)
前面已经完成了考勤信息的录入工作,这里将要介绍考勤信息的统计与查询工作,便于用户的管理。创建一个对话框资源ID为IDD_CHECK_INFO_DLG,添加如图4-28所示的控件。
|
| (点击查看大图)图4-28 考勤信息界面设计 |
双击对话框为对话框创建一个新类CCheckInfoDlg,通过类向导为控件关联相应的变量。添加WM_INITDIALOG消息响应函数OnInitDialog(),代码如下:
代码位置:见光盘中本章源代码的CCheckInfoDlg类。
- 1 BOOL CCheckInfoDlg::OnInitDialog()
- 2 {
- 3 CDialog::OnInitDialog();
- 4 m_pRecordset.CreateInstance("ADODB.Recordset");
//创建记录集实例 - 5 m_ListCrtl.SetExtendedStyle(LVS_EX_GRIDLINES |
LVS_EX_FULLROWSELECT ); - 6 m_ListCrtl.InsertColumn(0, "日期", LVCFMT_CENTER, 80);
//风格设定 - 7 m_ListCrtl.InsertColumn(1, "员工ID", LVCFMT_CENTER, 60);
- 8 m_ListCrtl.InsertColumn(2, "缺勤", LVCFMT_CENTER, 40);
- 9 m_ListCrtl.InsertColumn(3, "早退", LVCFMT_CENTER, 40);
- 10 m_ListCrtl.InsertColumn(4, "迟到", LVCFMT_CENTER, 40);
- 11 m_ListCrtl.InsertColumn(5, "休息", LVCFMT_CENTER, 40);
- 12 m_ListCrtl.InsertColumn(6, "病假", LVCFMT_CENTER, 40);
- 13 m_ListCrtl.InsertColumn(7, "出差", LVCFMT_CENTER, 40);
- 14 m_ListCrtl.InsertColumn(8, "事假", LVCFMT_CENTER, 40);
- 15 m_ListCrtl.InsertColumn(9, "备注", LVCFMT_CENTER, 120);
- 16 CString strSQL;
//定义字符串变量 - 17 strSQL.Format("select * from checkinfo ");
- 18 try
- 19 {
- 20 m_pRecordset = theApp.m_pConnection->Execute
((_bstr_t)strSQL, NULL, adCmdText); - 21 int i = 0;
//定义整型变量 - 22 while(!m_pRecordset->adoEOF)
//如果记录没有到末尾 - 23 {
- 24 m_ListCrtl.InsertItem(i,(char*)_bstr_t
(m_pRecordset->GetCollect(_ variant_t((long)0)))); - 25 for(int j = 1; j < 9; j++)
- 26 m_ListCrtl.SetItemText(i,j,(char*)_bstr_t
(m_pRecordset->GetCollect (_variant_t((long)j)))); - 27 i++;
- 28 m_pRecordset->MoveNext();
//移动到下一条记录 - 29 }
- 30 }
- 31 CATCH_ERROR;
- 32 return TRUE;
- 33 }
第4~15行代码完成了列表控件的初始化。
第17~31行代码将从数据库中读取的数据填充到列表控件中去。
上述代码为初始化的设置,其中设定了列表控件的标题和风格,通过InsertItem()函数设置列表控件第一列的数据,SetItemText()函数设置对其他列的数据。
通过类向导为列表控件添加LVN_ITEMCHANGED消息响应函数。OnItemchangedList1()函数中代码如下:
代码位置:见光盘中本章源代码的CCheckInfoDlg类。
- 1 void CCheckInfoDlg::OnItemchangedList1(NMHDR*
pNMHDR, LRESULT* pResult) - 2 {
- 3 NM_LISTVIEW* pNMListView = (NM_LISTVIEW*)pNMHDR;
- 4 int nSelect = pNMListView->iItem;
//获取列表控件行索引 - 5 m_strID = m_ListCrtl.GetItemText(nSelect, 1);
//获取列表控件文本 - 6 CString strDate = m_ListCrtl.GetItemText(nSelect, 0);
- 7 int nIndex = strDate.Find('-');
//查找字符'-'的位置 - 8 CString str = strDate.Left(nIndex);
//取索引左边的字符串 - 9 int Year = atoi(str);
//字符型转换为整型 - 10 strDate = strDate.Right(strDate.GetLength()
- nIndex - 1); - 11 nIndex = strDate.Find('-');
- 12 str = strDate.Left(nIndex);
- 13 int Month = atoi(str);
- 14 strDate = strDate.Right(strDate.GetLength()
- nIndex - 1); - 15 int Day = atoi(strDate);
- 16 m_Date.SetDate(Year, Month, Day);
//设置时间 - 17 UpdateData(FALSE);
- 18 *pResult = 0;
- 19 }
第4~6行代码完成了列表控件值的获取。
第6~16行代码完成了时间的设置。
【责任编辑:
云霞 TEL:(010)68476606】