4.6.4 考勤的统计、查询与删除(2)
上述代码通过鼠标单击列表控件的位置获取职工的ID与时间,将数据显示在编辑框中,其中涉及DateTimePicker控件时间的设置。通过字符串的截取,把年月日放在三个整型变量中,再通过函数SetDate()设置DateTimePicker控件的时间。自定义函数ShowListData()用来显示列表控件中的数据,代码如下:
代码位置:见光盘中本章源代码的CCheckInfoDlg类。
- 1 void CCheckInfoDlg::ShowListData(const CString& sql)
- 2 {
- 3 m_ListCrtl.DeleteAllItems();
//删除列表控件所有项 - 4 try
- 5 {
- 6 m_pRecordset = theApp.m_pConnection->Execute
((_bstr_t)sql, NULL, adCmdText); - 7 int i = 0;
- 8 while(!m_pRecordset->adoEOF)
//如果记录没有到末尾 - 9 {
- 10 m_ListCrtl.InsertItem(i,(char*)_bstr_t
(m_pRecordset->GetCollect (_variant_t((long)0)))); - 11 for(int j = 1; j < 9; j++)
- 12 m_ListCrtl.SetItemText(i,j,(char*)_bstr_t
(m_pRecordset->GetCollect (_variant_t((long)j)))); - 13 i++;
- 14 m_pRecordset->MoveNext();
//移动到下一条记录 - 15 }
- 16 }
- 17 CATCH_ERROR;
- 18 }
第3行代码为删除列表控件中的所有子项。
第4~16行代码完成了列表控件数据的显示。
ShowListData()函数的参数为SQL语句,根据SQL语句查询相应的数据,将数据插入到列表控件中。将参数设定为SQL语句可以满足从不同的表中查询数据添加到一个列表控件中。给【查询】按钮添加消息响应函数,完成数据的查询,代码如下:
代码位置:见光盘中本章源代码的CCheckInfoDlg类。
- 1 void CCheckInfoDlg::OnIndex()
- 2 {
- 3 UpdateData();
//数据的获取 - 4 if(m_strID == "")
//条件的判断 - 5 {
- 6 MessageBox("请出入查询条件!");
- 7 return ;
- 8 }
- 9 CString strSQL, strDate;
//定义字符串变量 - 10 strDate.Format("%d-%d-%d", m_Date.GetYear(),
m_Date.GetMonth(), m_Date. GetDay()); - 11 strSQL.Format("select * from checkinfo where
id = %s and date = '%s'", m_strID, strDate); - 12 ShowListData(strSQL);
//显示列表控件中的数据 - 13 }
第4~6行代码完成了查询条件的判断。
第9~11行代码完成了SQL语句的构造。
上述代码借助Format()函数构造查询的SQL语句,将构造好的SQL语句通过参数的形式传递给ShowListData(),将数据添加到列表控件中。给【删除】按钮添加消息响应函数,该函数的功能是完成考勤记录的删除。
代码位置:见光盘中本章源代码的CCheckInfoDlg类。
- 1 void CCheckInfoDlg::OnDel()
- 2 {
- 3 if(m_strID == "")
//条件的判断 - 4 {
- 5 MessageBox("请选择一条记录!");
//信息提示 - 6 return ;
- 7 }
- 8 if(MessageBox("确定删除吗?", "注意", MB_YESNO) == IDYES)
- 9 {
- 10 CString strSQL, strDate;
//定义字符串变量 - 11 strDate.Format("%d-%d-%d", m_Date.GetYear(),
m_Date.GetMonth(), m_Date. GetDay()); - 12 strSQL.Format("delete from checkinfo where
id = %s and date = '%s'", m_strID, strDate); - 13 try
- 14 {
//执行删除记录操作 - 15 theApp.m_pConnection->Execute
((_bstr_t)strSQL, NULL, adCmdText); - 16 ShowListData("select * from checkinfo");
//列表更新显示 - 17 }
- 18 CATCH_ERROR;
- 19 }
- 20 }
第4~6行代码完成了查询条件的判断。
第8~18行代码完成了考勤信息的删除。
上述代码借助Format()函数构造删除的SQL语句,通过Execute()函数执行SQL语句删除选择的数据,重新构造查询的SQL语句将所有数据显示在列表控件中。
……
【责任编辑:
云霞 TEL:(010)68476606】