设为首页 加入收藏

TOP

4.6.4 考勤的统计、查询与删除(1)
2013-10-07 00:55:01 来源: 作者: 【 】 浏览:68
Tags:4.6.4 考勤 统计 查询 删除

4.6.4  考勤的统计、查询与删除(1)

前面已经完成了考勤信息的录入工作,这里将要介绍考勤信息的统计与查询工作,便于用户的管理。创建一个对话框资源ID为IDD_CHECK_INFO_DLG,添加如图4-28所示的控件。

 
(点击查看大图)图4-28  考勤信息界面设计

双击对话框为对话框创建一个新类CCheckInfoDlg,通过类向导为控件关联相应的变量。添加WM_INITDIALOG消息响应函数OnInitDialog(),代码如下:

代码位置:见光盘中本章源代码的CCheckInfoDlg类。

  1. 1  BOOL CCheckInfoDlg::OnInitDialog()  
  2. 2  {  
  3. 3   CDialog::OnInitDialog();  
  4. 4   m_pRecordset.CreateInstance("ADODB.Recordset");      
    //创建记录集实例  
  5. 5   m_ListCrtl.SetExtendedStyle(LVS_EX_GRIDLINES | 
    LVS_EX_FULLROWSELECT );  
  6. 6   m_ListCrtl.InsertColumn(0, "日期", LVCFMT_CENTER, 80);   
    //风格设定  
  7. 7   m_ListCrtl.InsertColumn(1, "员工ID", LVCFMT_CENTER, 60);  
  8. 8   m_ListCrtl.InsertColumn(2, "缺勤", LVCFMT_CENTER, 40);  
  9. 9   m_ListCrtl.InsertColumn(3, "早退", LVCFMT_CENTER, 40);  
  10. 10      m_ListCrtl.InsertColumn(4, "迟到", LVCFMT_CENTER, 40);  
  11. 11      m_ListCrtl.InsertColumn(5, "休息", LVCFMT_CENTER, 40);  
  12. 12      m_ListCrtl.InsertColumn(6, "病假", LVCFMT_CENTER, 40);  
  13. 13      m_ListCrtl.InsertColumn(7, "出差", LVCFMT_CENTER, 40);  
  14. 14      m_ListCrtl.InsertColumn(8, "事假", LVCFMT_CENTER, 40);  
  15. 15      m_ListCrtl.InsertColumn(9, "备注", LVCFMT_CENTER, 120);  
  16. 16      CString strSQL;                                 
    //定义字符串变量  
  17. 17      strSQL.Format("select * from checkinfo ");  
  18. 18      try  
  19. 19      {  
  20. 20          m_pRecordset = theApp.m_pConnection->Execute
    ((_bstr_t)strSQL, NULL, adCmdText);  
  21. 21          int i = 0;                                 
    //定义整型变量  
  22. 22          while(!m_pRecordset->adoEOF)                  
    //如果记录没有到末尾  
  23. 23          {  
  24. 24              m_ListCrtl.InsertItem(i,(char*)_bstr_t
    (m_pRecordset->GetCollect(_ variant_t((long)0))));  
  25. 25              for(int j = 1; j < 9; j++)  
  26. 26            m_ListCrtl.SetItemText(i,j,(char*)_bstr_t
    (m_pRecordset->GetCollect (_variant_t((long)j))));  
  27. 27              i++;  
  28. 28              m_pRecordset->MoveNext();          
    //移动到下一条记录  
  29. 29          }  
  30. 30      }  
  31. 31      CATCH_ERROR;  
  32. 32      return TRUE;  
  33. 33  } 

第4~15行代码完成了列表控件的初始化。

第17~31行代码将从数据库中读取的数据填充到列表控件中去。

上述代码为初始化的设置,其中设定了列表控件的标题和风格,通过InsertItem()函数设置列表控件第一列的数据,SetItemText()函数设置对其他列的数据。

通过类向导为列表控件添加LVN_ITEMCHANGED消息响应函数。OnItemchangedList1()函数中代码如下:

代码位置:见光盘中本章源代码的CCheckInfoDlg类。

  1. 1  void CCheckInfoDlg::OnItemchangedList1(NMHDR* 
    pNMHDR, LRESULT* pResult)  
  2. 2  {  
  3. 3   NM_LISTVIEW* pNMListView = (NM_LISTVIEW*)pNMHDR;  
  4. 4   int nSelect = pNMListView->iItem;                
    //获取列表控件行索引  
  5. 5   m_strID = m_ListCrtl.GetItemText(nSelect, 1);      
    //获取列表控件文本  
  6. 6   CString strDate = m_ListCrtl.GetItemText(nSelect, 0);  
  7. 7   int nIndex = strDate.Find('-');                   
    //查找字符
    '-'的位置  
  8. 8   CString str = strDate.Left(nIndex);               
    //取索引左边的字符串  
  9. 9   int Year = atoi(str);                            
    //字符型转换为整型  
  10. 10      strDate = strDate.Right(strDate.GetLength() 
    - nIndex - 1);  
  11. 11      nIndex = strDate.Find('-');  
  12. 12      str = strDate.Left(nIndex);  
  13. 13      int Month = atoi(str);  
  14. 14      strDate = strDate.Right(strDate.GetLength() 
    - nIndex - 1);  
  15. 15      int Day = atoi(strDate);  
  16. 16      m_Date.SetDate(YearMonthDay);           
    //设置时间  
  17. 17      UpdateData(FALSE);  
  18. 18      *pResult = 0;  
  19. 19  } 

第4~6行代码完成了列表控件值的获取。

第6~16行代码完成了时间的设置。

【责任编辑:云霞 TEL:(010)68476606】

回书目   上一节   下一节

】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇4.6.4 考勤的统计、查询与删除(2.. 下一篇4.6.3 考勤管理的实现(2)

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: